Skip to main content
Glama
find-bank-leumi.cjs9.48 kB
#!/usr/bin/env node /** * Comprehensive search for Bank Leumi in all available data */ const { spawn } = require('child_process'); async function findBankLeumi() { console.log('🔍 COMPREHENSIVE SEARCH FOR BANK LEUMI'); console.log('=' .repeat(60)); console.log('Searching in:'); console.log('1. AllCloud payer accounts (319 accounts)'); console.log('2. MSP customers/divisions'); console.log('3. User divisions structure'); console.log('4. Any other available endpoints'); console.log(''); const server = spawn('node', ['dist/index.js'], { stdio: ['pipe', 'pipe', 'pipe'], env: process.env }); let responses = {}; let responseBuffer = ''; let allDebugOutput = []; server.stdout.on('data', (data) => { responseBuffer += data.toString(); const lines = responseBuffer.split('\n'); for (let i = 0; i < lines.length - 1; i++) { const line = lines[i].trim(); if (line) { try { const response = JSON.parse(line); if (response.id) { responses[response.id] = response; } } catch (e) {} } } responseBuffer = lines[lines.length - 1]; }); server.stderr.on('data', (data) => { const msg = data.toString(); allDebugOutput.push(msg); // Show any mentions of Leumi or banks if (msg.toLowerCase().includes('leumi') || msg.toLowerCase().includes('bank') || msg.toLowerCase().includes('division')) { console.log('🔍', msg.trim()); } }); await new Promise(resolve => setTimeout(resolve, 3000)); console.log('📡 Step 1: Initialize and authenticate...'); server.stdin.write(JSON.stringify({ jsonrpc: "2.0", id: 1, method: "initialize", params: { protocolVersion: "0.1.0", capabilities: {}, clientInfo: { name: "leumi-search", version: "1.0.0" } } }) + '\n'); await new Promise(resolve => setTimeout(resolve, 1000)); // Auth with AllCloud server.stdin.write(JSON.stringify({ jsonrpc: "2.0", id: 2, method: "tools/call", params: { name: "authenticate_user", arguments: { username: "david+allcloud@umbrellacost.com", password: "B4*zcI7#F7poEC" } } }) + '\n'); await new Promise(resolve => setTimeout(resolve, 8000)); console.log('\n🎯 Step 2: Search in MSP customers...'); server.stdin.write(JSON.stringify({ jsonrpc: "2.0", id: 10, method: "tools/call", params: { name: "api___msp_customers", arguments: {} } }) + '\n'); await new Promise(resolve => setTimeout(resolve, 5000)); console.log('\n👥 Step 3: Search in users endpoint...'); server.stdin.write(JSON.stringify({ jsonrpc: "2.0", id: 11, method: "tools/call", params: { name: "api___users", arguments: {} } }) + '\n'); await new Promise(resolve => setTimeout(resolve, 5000)); console.log('\n🔍 Step 4: Trigger customer detection with Bank Leumi query...'); server.stdin.write(JSON.stringify({ jsonrpc: "2.0", id: 12, method: "tools/call", params: { name: "api___recommendationsNew_heatmap_summary", arguments: { userQuery: "Show me Bank Leumi cost recommendations and optimization opportunities" } } }) + '\n'); await new Promise(resolve => setTimeout(resolve, 8000)); // Analyze all responses console.log('\n📊 ANALYSIS RESULTS:'); console.log('=' .repeat(60)); // Check MSP customers if (responses[10]?.result?.content?.[0]?.text) { const mspText = responses[10].result.content[0].text; console.log('\n1️⃣ MSP CUSTOMERS ANALYSIS:'); if (mspText.toLowerCase().includes('leumi')) { console.log('✅ "Leumi" found in MSP customers!'); const leumiLines = mspText.split('\n').filter(line => line.toLowerCase().includes('leumi') ); leumiLines.forEach(line => { console.log(` 📋 ${line.trim()}`); }); } else { console.log('❌ "Leumi" NOT found in MSP customers response'); } // Check for JSON structure const jsonMatch = mspText.match(/```json\s*([\s\S]*?)\s*```/); if (jsonMatch) { try { const data = JSON.parse(jsonMatch[1]); console.log(` 📊 Found ${Array.isArray(data) ? data.length : 'N/A'} MSP customer records`); if (Array.isArray(data)) { // Search through all customer records for Leumi const leumiCustomers = data.filter(customer => { const name = (customer.customerName || customer.customer_name || '').toLowerCase(); const code = (customer.customerCode || customer.customer_code || '').toLowerCase(); return name.includes('leumi') || code.includes('leumi'); }); if (leumiCustomers.length > 0) { console.log(` 🎯 BANK LEUMI FOUND IN MSP CUSTOMERS!`); leumiCustomers.forEach((customer, index) => { console.log(` ${index + 1}. Name: "${customer.customerName || customer.customer_name}"`); console.log(` Code: "${customer.customerCode || customer.customer_code}"`); console.log(` ID: ${customer.customerId || customer.customer_id}`); console.log(` Account Key: ${customer.accountKey || customer.account_key}`); }); } else { console.log(` ❌ Bank Leumi not found in ${data.length} MSP customer records`); } } } catch (e) { console.log(' ⚠️ Failed to parse MSP customers JSON'); } } } else { console.log('\n1️⃣ ❌ No MSP customers response'); } // Check users response if (responses[11]?.result?.content?.[0]?.text) { const usersText = responses[11].result.content[0].text; console.log('\n2️⃣ USERS ENDPOINT ANALYSIS:'); if (usersText.toLowerCase().includes('leumi')) { console.log('✅ "Leumi" found in users response!'); const leumiLines = usersText.split('\n').filter(line => line.toLowerCase().includes('leumi') ); leumiLines.forEach(line => { console.log(` 📋 ${line.trim()}`); }); } else { console.log('❌ "Leumi" NOT found in users response'); } // Look for divisions data if (usersText.includes('divisionsIds') || usersText.includes('divisionId')) { console.log('✅ Contains division data'); // Try to find division structure const jsonMatch = usersText.match(/```json\s*([\s\S]*?)\s*```/); if (jsonMatch) { try { const userData = JSON.parse(jsonMatch[1]); if (userData.divisionsIds) { console.log(` 📊 User has ${userData.divisionsIds.length} division IDs: ${userData.divisionsIds.join(', ')}`); } if (userData.accounts && Array.isArray(userData.accounts)) { console.log(` 📊 User has ${userData.accounts.length} accounts`); // Check accounts for divisions const divisionMap = new Map(); userData.accounts.forEach(account => { const divId = account.divisionId || 0; if (!divisionMap.has(divId)) { divisionMap.set(divId, []); } divisionMap.get(divId).push(account.accountName); }); console.log(` 📋 Accounts grouped by division:`); for (const [divId, accounts] of divisionMap.entries()) { console.log(` Division ${divId}: ${accounts.length} accounts`); if (divId !== 0) { accounts.slice(0, 2).forEach(acc => { console.log(` - ${acc}`); }); } } } } catch (e) { console.log(' ⚠️ Failed to parse users JSON'); } } } } else { console.log('\n2️⃣ ❌ No users response'); } // Check detection attempt console.log('\n3️⃣ CUSTOMER DETECTION ATTEMPT:'); if (responses[12]) { if (responses[12].error) { console.log('❌ Detection query failed:', responses[12].error); } else { console.log('✅ Detection query succeeded'); } } else { console.log('⏳ No detection response'); } // Search through all debug output for any Leumi mentions console.log('\n4️⃣ DEBUG OUTPUT SEARCH:'); const leumiMentions = allDebugOutput.filter(line => line.toLowerCase().includes('leumi') ); if (leumiMentions.length > 0) { console.log(`✅ Found ${leumiMentions.length} mentions of "Leumi" in debug output:`); leumiMentions.forEach((mention, index) => { console.log(` ${index + 1}. ${mention.trim()}`); }); } else { console.log('❌ No mentions of "Leumi" found in debug output'); } server.kill(); console.log('\n🎯 CONCLUSION:'); console.log('=' .repeat(60)); console.log('If Bank Leumi is not found in any of these sources,'); console.log('it might be:'); console.log('1. In a different MSP environment/tenant'); console.log('2. Named differently (e.g., "Leumi Bank", "Bank Leumi Ltd")'); console.log('3. Only accessible via the frontend API with specific headers'); console.log('4. In the divisions table but not exposed via current endpoints'); console.log('\n✅ Search complete'); } findBankLeumi().catch(console.error);

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/daviddraiumbrella/invoice-monitoring'

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