{
  "$schema": "https://modelcontextprotocol.io/schema/v1/server-card.json",
  "serverInfo": {
    "name": "ocosafer-storage-brain",
    "version": "1.0.0"
  },
  "name": "OCoSafer Storage Brain",
  "description": "Servidor MCP oficial OCoSafer para gestão, busca semântica e inteligência de armazenamento privativo para MVNOs.",
  "version": "1.0.0",
  "endpoint": "https://ocosafer-cofre-api-prod.xerifegomes-e71.workers.dev/mcp",
  "transport": {
    "type": "streamable-http",
    "url": "https://ocosafer-cofre-api-prod.xerifegomes-e71.workers.dev/mcp"
  },
  "capabilities": {
    "tools": {
      "listChanged": true
    },
    "resources": {
      "subscribe": false,
      "listChanged": false
    },
    "prompts": {
      "listChanged": false
    },
    "logging": {}
  },
  "handshake": {
    "protocol": "SI-001",
    "specification": "RFC-9421",
    "status": "enforced",
    "mode": "required-for-write",
    "endpoint": "https://ocosafer.com.br/.well-known/agent-handshake.json",
    "description": "Handshake obrigatório de assinatura digital HTTP (SI-001) para validar requisições e ações de agentes antes da execução."
  },
  "tools": [
    {
      "name": "search_storage",
      "description": "Pesquisar conteúdo autorizado do assinante usando busca textual, metadata e ranking semântico.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Termo de busca textual ou semântica",
            "minLength": 1,
            "maxLength": 128,
            "pattern": "^[a-zA-Z0-9_\\-\\.\\s]+$"
          },
          "limit": {
            "type": "number",
            "description": "Limite máximo de resultados (1-100)",
            "minimum": 1,
            "maximum": 100
          }
        },
        "required": ["query"]
      }
    },
    {
      "name": "buscar_conteudo",
      "description": "Buscar documentos, fotos e contratos no cofre privativo.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Termo de busca sanitizado",
            "minLength": 1,
            "maxLength": 128,
            "pattern": "^[a-zA-Z0-9_\\-\\.\\s]+$"
          }
        },
        "required": ["query"]
      }
    },
    {
      "name": "adicionar_arquivo",
      "description": "Iniciar sessão de upload direto para fotos ou documentos com validação de cota.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "filename": {
            "type": "string",
            "description": "Nome do arquivo com extensão",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_\\-\\.\\s]+$"
          },
          "mime_type": {
            "type": "string",
            "description": "MIME type",
            "minLength": 3,
            "maxLength": 100,
            "pattern": "^[a-zA-Z0-9]+/[a-zA-Z0-9\\.\\-\\+]+$"
          },
          "size_bytes": {
            "type": "number",
            "description": "Tamanho em bytes",
            "minimum": 1,
            "maximum": 5368709120
          }
        },
        "required": ["filename", "mime_type", "size_bytes"]
      }
    },
    {
      "name": "agendar_piloto",
      "description": "Agendar demonstração técnica de integração e validação do piloto operacional de 14 dias.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "nome": {
            "type": "string",
            "description": "Nome do responsável técnico",
            "minLength": 2,
            "maxLength": 100,
            "pattern": "^[a-zA-Z0-9_\\-\\.\\s]+$"
          },
          "email": {
            "type": "string",
            "description": "Email corporativo",
            "minLength": 5,
            "maxLength": 254,
            "pattern": "^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$"
          },
          "empresa": {
            "type": "string",
            "description": "Nome da operadora ou ISP",
            "minLength": 2,
            "maxLength": 100,
            "pattern": "^[a-zA-Z0-9_\\-\\.\\s]+$"
          }
        },
        "required": ["nome", "email", "empresa"]
      }
    },
    {
      "name": "get_object_intelligence",
      "description": "Consultar metadata, OCR, tags de IA e pHash de um objeto autorizado.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "object_id": {
            "type": "string",
            "description": "ID único do objeto no cofre",
            "minLength": 1,
            "maxLength": 64,
            "pattern": "^[a-zA-Z0-9_\\-]+$"
          }
        },
        "required": ["object_id"]
      }
    },
    {
      "name": "find_documents",
      "description": "Pesquisar documentos autorizados com filtro especializado.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Termo de busca em documentos",
            "minLength": 1,
            "maxLength": 128,
            "pattern": "^[a-zA-Z0-9_\\-\\.\\s]+$"
          },
          "limit": {
            "type": "number",
            "description": "Limite de resultados",
            "minimum": 1,
            "maximum": 50
          }
        },
        "required": ["query"]
      }
    },
    {
      "name": "find_duplicates",
      "description": "Localizar duplicatas exatas (SHA-256) e fotos semelhantes (pHash) no escopo autorizado.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "number",
            "description": "Limite máximo de grupos",
            "minimum": 1,
            "maximum": 50
          }
        }
      }
    },
    {
      "name": "get_storage_insights",
      "description": "Consultar métricas de uso, espaço ocupado e arquivos grandes.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    },
    {
      "name": "preview_cleanup",
      "description": "Gerar recomendações de limpeza sem executar exclusões.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }
  ],
  "security": {
    "handshake_protocol": "SI-001",
    "agent_signature": {
      "protocol": "RFC-9421",
      "handshake": "SI-001",
      "required_for_mutations": true,
      "signature_headers": ["@method", "@target-uri", "@authority", "content-digest"],
      "handshake_endpoint": "https://ocosafer.com.br/.well-known/agent-handshake.json"
    },
    "authentication": "Authorization: Bearer <JWT HS256> ou ApiKey <key_id>.<secret>",
    "scope": "Tenant and subscriber",
    "destructive_actions": "Requer confirmação explícita com janela de retenção de 30 dias"
  },
  "documentation": "https://ocosafer.com.br/docs"
}
