Skip to main content
Glama
tools.ts10.1 kB
export const tools = [ { name: 'navigate', description: 'Navega para uma URL específica e carrega a página completamente', inputSchema: { type: 'object', properties: { url: { type: 'string', description: 'URL completa para navegar (deve incluir http:// ou https://)', }, waitUntil: { type: 'string', enum: ['load', 'domcontentloaded', 'networkidle0', 'networkidle2'], description: 'Condição de espera (padrão: networkidle2)', default: 'networkidle2', }, timeout: { type: 'number', description: 'Timeout em milissegundos (padrão: 30000)', default: 30000, }, }, required: ['url'], }, }, { name: 'get_dom', description: 'Extrai o HTML completo do DOM atual da página', inputSchema: { type: 'object', properties: { prettify: { type: 'boolean', description: 'Se true, formata o HTML de forma legível', default: true, }, }, }, }, { name: 'get_element', description: 'Inspeciona um elemento específico usando seletor CSS', inputSchema: { type: 'object', properties: { selector: { type: 'string', description: "Seletor CSS do elemento (ex: '#id', '.class', 'div.container')", }, includeStyles: { type: 'boolean', description: 'Incluir estilos computados do elemento', default: true, }, includeAttributes: { type: 'boolean', description: 'Incluir todos os atributos do elemento', default: true, }, }, required: ['selector'], }, }, { name: 'execute_js', description: 'Executa código JavaScript arbitrário no contexto da página', inputSchema: { type: 'object', properties: { code: { type: 'string', description: 'Código JavaScript para executar', }, returnValue: { type: 'boolean', description: 'Se true, retorna o valor da execução', default: true, }, }, required: ['code'], }, }, { name: 'screenshot', description: 'Captura uma screenshot da página ou de um elemento específico', inputSchema: { type: 'object', properties: { selector: { type: 'string', description: 'Seletor CSS do elemento (opcional, captura página inteira se omitido)', }, fullPage: { type: 'boolean', description: 'Capturar página inteira incluindo scroll', default: false, }, path: { type: 'string', description: "Caminho para salvar a screenshot (ex: './screenshot.png')", }, }, }, }, { name: 'get_console_logs', description: 'Recupera todos os logs do console capturados desde a última navegação', inputSchema: { type: 'object', properties: { filterType: { type: 'string', enum: ['all', 'log', 'error', 'warning', 'info'], description: 'Filtrar por tipo de log', default: 'all', }, clear: { type: 'boolean', description: 'Limpar logs após recuperação', default: false, }, }, }, }, { name: 'get_network_activity', description: 'Recupera todas as requisições de rede capturadas', inputSchema: { type: 'object', properties: { filterType: { type: 'string', enum: ['all', 'request', 'response'], description: 'Filtrar por tipo', default: 'all', }, clear: { type: 'boolean', description: 'Limpar histórico após recuperação', default: false, }, }, }, }, { name: 'get_page_source', description: 'Extrai todo o código fonte da página incluindo scripts, styles e recursos', inputSchema: { type: 'object', properties: { includeScripts: { type: 'boolean', description: 'Incluir conteúdo de todos os scripts', default: true, }, includeStyles: { type: 'boolean', description: 'Incluir conteúdo de todos os estilos', default: true, }, }, }, }, { name: 'query_selector_all', description: 'Busca todos os elementos que correspondem ao seletor CSS', inputSchema: { type: 'object', properties: { selector: { type: 'string', description: 'Seletor CSS', }, limit: { type: 'number', description: 'Limitar número de resultados', default: 100, }, }, required: ['selector'], }, }, { name: 'get_page_info', description: 'Obtém informações gerais sobre a página atual', inputSchema: { type: 'object', properties: {}, }, }, { name: 'click_element', description: 'Clica em um elemento da página', inputSchema: { type: 'object', properties: { selector: { type: 'string', description: 'Seletor CSS do elemento para clicar', }, waitForNavigation: { type: 'boolean', description: 'Aguardar navegação após o clique', default: false, }, }, required: ['selector'], }, }, { name: 'type_text', description: 'Digita texto em um campo de input', inputSchema: { type: 'object', properties: { selector: { type: 'string', description: 'Seletor CSS do campo de input', }, text: { type: 'string', description: 'Texto para digitar', }, clearFirst: { type: 'boolean', description: 'Limpar campo antes de digitar', default: true, }, }, required: ['selector', 'text'], }, }, { name: 'get_local_storage', description: 'Obtém todos os dados do localStorage', inputSchema: { type: 'object', properties: {}, }, }, { name: 'get_cookies', description: 'Obtém todos os cookies da página atual', inputSchema: { type: 'object', properties: {}, }, }, { name: 'evaluate_xpath', description: 'Avalia uma expressão XPath e retorna os elementos correspondentes', inputSchema: { type: 'object', properties: { xpath: { type: 'string', description: 'Expressão XPath', }, }, required: ['xpath'], }, }, { name: 'get_browser_status', description: 'SEMPRE USE ESTA FERRAMENTA PRIMEIRO! Verifica se o browser está aberto ou fechado. NUNCA abra um novo browser se ele já estiver aberto, isso fecharia a sessão atual e perderia o login.', inputSchema: { type: 'object', properties: {}, }, }, { name: 'close_browser', description: 'Fecha o browser e encerra a sessão. ⚠️ ATENÇÃO: Isso irá perder todos os cookies, localStorage e sessões de login! Use apenas quando o usuário pedir explicitamente para fechar o browser.', inputSchema: { type: 'object', properties: {}, }, }, { name: 'open_browser', description: 'Abre o browser em modo VISÍVEL (headful) APENAS se ele estiver FECHADO. ⚠️ IMPORTANTE: Use get_browser_status ANTES para verificar se já existe um browser aberto! Se já estiver aberto, NÃO use esta ferramenta pois isso fechará a sessão atual.', inputSchema: { type: 'object', properties: { url: { type: 'string', description: 'URL para abrir (opcional, se não fornecido abre em about:blank)', }, headless: { type: 'boolean', description: 'Se false, o browser fica visível (recomendado: false)', default: false, }, width: { type: 'number', description: 'Largura da janela do browser', default: 1920, }, height: { type: 'number', description: 'Altura da janela do browser', default: 1080, }, }, }, }, { name: 'login', description: 'Faz login automatizado em um site web usando seletores CSS. A sessão permanece ativa para uso posterior.', inputSchema: { type: 'object', properties: { url: { type: 'string', description: 'URL da página de login', }, usernameSelector: { type: 'string', description: 'Seletor CSS do campo de username/email (ex: "#username", "input[name=email]")', }, passwordSelector: { type: 'string', description: 'Seletor CSS do campo de senha (ex: "#password", "input[type=password]")', }, submitSelector: { type: 'string', description: 'Seletor CSS do botão de submit (ex: "button[type=submit]", ".login-btn")', }, username: { type: 'string', description: 'Username ou email para login', }, password: { type: 'string', description: 'Senha para login', }, waitForSelector: { type: 'string', description: 'Seletor CSS para confirmar login bem-sucedido (opcional, ex: ".user-dashboard")', }, timeout: { type: 'number', description: 'Timeout em milissegundos (padrão: 30000)', default: 30000, }, delayAfterType: { type: 'number', description: 'Delay após digitar em ms, útil para SPAs/React (padrão: 500)', default: 500, }, }, required: [ 'url', 'usernameSelector', 'passwordSelector', 'submitSelector', 'username', 'password', ], }, }, ] as const;

Implementation Reference

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/EmmanuelBarbosaMonteiro/mcp-server-browser'

If you have feedback or need assistance with the MCP directory API, please join our Discord server