#!/usr/bin/env node
const https = require('https');
// Test direct API call with MasterBilling API key
const apiKey = '8bd39ae4-ebea-4426-bd22-07349dd8b962:21112:0';
const authToken = 'eyJraWQiOiJoUFBoZTFRaWM4TklLU1dHcjQ4NEFHK3UwU2c5bCtmUHFWRWZUeCtcL0FcL1k9IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiI4YmQzOWFlNC1lYmVhLTQ0MjYtYmQyMi0wNzM0OWRkOGI5NjIiLCJhdWQiOiI3aTgyY25wdDQ2OXJjZDkzZmlmMWdsaG5rbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJldmVudF9pZCI6ImRkOGI2NjY3LTExYmItNDBjMi1iYTg5LTUwMTZiNjcyMGUxZCIsInRva2VuX3VzZSI6ImlkIiwiYXV0aF90aW1lIjoxNzU5MDY3NTEyLCJpc3MiOiJodHRwczpcL1wvY29nbml0by1pZHAudXMtZWFzdC0xLmFtYXpvbmF3cy5jb21cL3VzLWVhc3QtMV9VdjZBck5kU0siLCJjb2duaXRvOnVzZXJuYW1lIjoiOGJkMzlhZTQtZWJlYS00NDI2LWJkMjItMDczNDlkZDhiOTYyIiwiZXhwIjoxNzU5MTUzOTEyLCJpYXQiOjE3NTkwNjc1MTIsImVtYWlsIjoiZGF2aWQrc2FvbGFAdW1icmVsbGFjb3N0LmNvbSJ9.iY4Ytlx5sLaZkYHG3N6VVLuT8tiigFRN_VCgVz7qNi31wTs5FyYWT7YEicwhc8iz3NvAe3GO5pFMyXHL8BQ2Uk1Z5R8ZHDrPcszaWS0C82btBk6pHyqmAlotODsk41vkTZ2C3BL_Cc6KTtA05j_vYpDTbeLL7iwkc5HMtWdt6E-8CnxZ-ZCQtRL0HnCPASQYqvq8cWFVWJQtj4Ixd06RHq7plcOYoRxmYJdietpO_M-GztM3BvweHYsfKP-9Rjlsydt04_CZUvyUV8f0yT-THvlrZKPO_d14NgHFVuHGo7SK8ByrESSmt7QptzO4hyVwEXBrQUhsuoqw40iWnay3qg';
console.log('Testing MasterBilling with exact MCP server request...\n');
// MCP Server request
const mcpUrl = 'https://api.umbrellacost.io/api/v1/invoices/caui?startDate=2025-04-01&endDate=2025-09-30&groupBy=none&periodGranLevel=month&costType=cost&isUnblended=true&cloud_context=gcp&excludeFilters[chargetype][]=Tax';
console.log('MCP Server URL:', mcpUrl);
console.log('\nHeaders being sent:');
console.log({
'Authorization': authToken.substring(0, 50) + '...',
'apikey': apiKey
});
const url = new URL(mcpUrl);
const options = {
hostname: url.hostname,
path: url.pathname + url.search,
method: 'GET',
headers: {
'Authorization': authToken,
'apikey': apiKey,
'Accept': 'application/json'
}
};
https.request(options, (res) => {
let data = '';
res.on('data', chunk => data += chunk);
res.on('end', () => {
console.log('\n=== RESPONSE ===');
console.log('Status:', res.statusCode);
console.log('Headers:', res.headers);
try {
const json = JSON.parse(data);
console.log('\nData length:', json.Data ? json.Data.length : 0);
if (json.Data && json.Data.length > 0) {
console.log('First record:', json.Data[0]);
} else {
console.log('Response:', JSON.stringify(json, null, 2));
}
} catch (e) {
console.log('Raw response:', data.substring(0, 500));
}
});
}).on('error', (e) => {
console.error('Request error:', e);
}).end();