Skip to main content
Glama
test-claude-exact-query.cjsβ€’6.02 kB
#!/usr/bin/env node const https = require('https'); const axios = require('axios'); const axiosInstance = axios.create({ httpsAgent: new https.Agent({ rejectUnauthorized: false }), timeout: 30000 }); async function testClaudeExactQuery() { console.log('\n════════════════════════════════════════════════════════════'); console.log(' TESTING EXACT QUERY FROM CLAUDE DESKTOP LOGS'); console.log('════════════════════════════════════════════════════════════\n'); const baseUrl = 'https://api.umbrellacost.io/api/v1'; try { // Authenticate as AllCloud user console.log('Authenticating as david+allcloud@umbrellacost.com...'); const authResponse = await axiosInstance.post(`${baseUrl}/users/signin`, { username: 'david+allcloud@umbrellacost.com', password: 'Dsamsung1!123' }); const token = authResponse.data.jwtToken; const tokenPayload = JSON.parse(Buffer.from(token.split('.')[1], 'base64').toString()); const userKey = tokenPayload.username || tokenPayload.sub; console.log('βœ… Authenticated. User Key:', userKey); // Build API key exactly as MCP does const apiKey = `${userKey}:22676:139`; console.log('API Key:', apiKey); // EXACT parameters from Claude Desktop logs console.log('\nπŸ“Š Testing EXACT query from Claude logs:'); console.log('Query: "Show me Bank Leumi costs per month for 2025"'); const params = new URLSearchParams({ accountId: '696314371547', customer_account_key: '22676', customer_division_id: '139', startDate: '2025-01-01', endDate: '2025-09-21', periodGranLevel: 'month', groupBy: 'none', costType: 'cost', isUnblended: 'true' }); // Add discount as second costType params.append('costType', 'discount'); // Add tax exclusion (MCP server does this automatically for MSP customers) params.append('excludeFilters[chargetype]', 'Tax'); console.log('\nπŸ” Sending request with parameters:'); console.log(' accountId:', '696314371547'); console.log(' customer_account_key:', '22676'); console.log(' customer_division_id:', '139'); console.log(' groupBy:', 'none'); console.log(' costType:', '["cost", "discount"]'); console.log(' excludeFilters[chargetype]:', 'Tax'); const response = await axiosInstance.get(`${baseUrl}/invoices/caui?${params}`, { headers: { 'Authorization': token, 'apikey': apiKey, 'commonparams': JSON.stringify({ isPpApplied: true }) } }); console.log('\nπŸ“‹ RESPONSE DATA:'); console.log('════════════════════════════════════════════════'); if (response.data && Array.isArray(response.data)) { console.log(`Total results: ${response.data.length}`); // Group by month if needed const monthlyData = {}; response.data.forEach(item => { const month = item.usage_date; if (!monthlyData[month]) { monthlyData[month] = 0; } monthlyData[month] += item.total_cost; }); console.log('\nπŸ“Š MONTHLY COSTS:'); console.log('Month Total Cost'); console.log('────────────────────────'); Object.keys(monthlyData).sort().forEach(month => { const cost = monthlyData[month]; const monthName = { '2025-01': 'Jan 2025', '2025-02': 'Feb 2025', '2025-03': 'Mar 2025', '2025-04': 'Apr 2025', '2025-05': 'May 2025', '2025-06': 'Jun 2025', '2025-07': 'Jul 2025', '2025-08': 'Aug 2025', '2025-09': 'Sep 2025' }[month] || month; console.log(`${monthName.padEnd(12)} $${cost.toFixed(6)}`); }); console.log('\nπŸ“ EXPECTED VALUES (from MANUAL_ANSWERS.txt):'); console.log('Aug 2025 $0.002684'); const august = monthlyData['2025-08'] || 0; const expected = 0.0026837670123269763; const diff = Math.abs(august - expected); const match = diff < 0.0001; console.log(`\n${match ? 'βœ…' : '❌'} August comparison:`); console.log(` Actual: $${august.toFixed(10)}`); console.log(` Expected: $${expected.toFixed(10)}`); console.log(` Diff: $${diff.toFixed(10)}`); // Show raw response for debugging console.log('\nπŸ“„ RAW RESPONSE (first item):'); console.log(JSON.stringify(response.data[0], null, 2)); } else { console.log('❌ No data returned or unexpected format'); console.log('Raw response:', JSON.stringify(response.data, null, 2)); } } catch (error) { console.error('\n❌ Error:', error.message); if (error.response) { console.error('Response status:', error.response.status); console.error('Response data:', error.response.data); } } } testClaudeExactQuery().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