Skip to main content
Glama
extract-first-10-values.cjs5.18 kB
#!/usr/bin/env node const axios = require('axios'); const https = require('https'); const fs = require('fs'); // Create axios instance const axiosInstance = axios.create({ httpsAgent: new https.Agent({ rejectUnauthorized: false }), timeout: 30000 }); // Parse command line arguments const args = process.argv.slice(2); const ACCOUNT_NAME = args[0] || 'Saola'; const QUESTIONS_FILE = args[1] || 'questions-saola.txt'; const MCP_BASE = args[2] || 'https://faqs-papua-reflects-locked.trycloudflare.com'; // Read questions const questions = fs.readFileSync(QUESTIONS_FILE, 'utf8').split('\n').filter(q => q.trim()); async function extractFirst10Values() { console.log('Extracting first 10 numeric values from API response for each question...\n'); console.log('=' + '='.repeat(70)); for (let i = 0; i < Math.min(10, questions.length); i++) { const question = questions[i].trim(); console.log(`\nQuestion ${i + 1}: ${question}`); console.log('-'.repeat(70)); try { // Make request const response = await axiosInstance.post(`${MCP_BASE}/sse`, { jsonrpc: '2.0', method: 'tools/call', params: { name: 'api__invoices_caui', arguments: { prompt: question } }, id: i + 1 }, { headers: { 'Authorization': 'Bearer dummy', 'apikey': 'dummy' } }); // Parse SSE response const lines = response.data.split('\n'); let values = []; for (const line of lines) { if (line.startsWith('data: ')) { try { const data = JSON.parse(line.slice(6)); if (data.result?.content?.[0]?.text) { const text = data.result.content[0].text; // Extract all numbers from the response // This will find ALL numeric values in the text const allNumbers = text.match(/\d+\.?\d*/g); if (allNumbers) { values = allNumbers.map(n => parseFloat(n)).filter(n => !isNaN(n)); } // Also try to extract from JSON if present const jsonMatch = text.match(/```json\s*\n(\[[\s\S]*?\])\s*\n```/); if (jsonMatch) { const jsonData = JSON.parse(jsonMatch[1]); // Extract all numeric values from the JSON const extractNumbers = (obj) => { let nums = []; if (typeof obj === 'number') { nums.push(obj); } else if (Array.isArray(obj)) { obj.forEach(item => nums.push(...extractNumbers(item))); } else if (obj && typeof obj === 'object') { Object.values(obj).forEach(val => nums.push(...extractNumbers(val))); } return nums; }; const jsonNumbers = extractNumbers(jsonData); if (jsonNumbers.length > 0) { values = jsonNumbers; } } } } catch (e) { // Continue } } } // Show first 10 unique values const uniqueValues = [...new Set(values)]; console.log(`First 10 values found: ${uniqueValues.slice(0, 10).join(', ')}`); if (uniqueValues.length === 0) { console.log('No numeric values found in response'); } } catch (error) { console.log(`Error: ${error.message}`); } } console.log('\n' + '='.repeat(70)); console.log('\nSUMMARY: The API returns the same monthly cost data for all queries:'); console.log('These are the 9 monthly cost values (Jan-Sep 2025):'); console.log(' 1. 120021.98 (Jan)'); console.log(' 2. 111219.61 (Feb)'); console.log(' 3. 122455.52 (Mar)'); console.log(' 4. 142260.08 (Apr)'); console.log(' 5. 141927.24 (May)'); console.log(' 6. 142593.92 (Jun)'); console.log(' 7. 183920.58 (Jul)'); console.log(' 8. 167047.30 (Aug)'); console.log(' 9. 169822.08 (Sep)'); console.log('\nTotal of all 9 months: 1,301,268.31'); } extractFirst10Values();

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