Skip to main content
Glama
modellers

ConsignCloud MCP Server

by modellers
test-all-endpoints.js9.9 kB
import { ConsignCloudClient } from './dist/client.js'; import dotenv from 'dotenv'; dotenv.config(); const apiKey = process.env.CONSIGNCLOUD_API_KEY; const apiUrl = process.env.CONSIGNCLOUD_API_BASE_URL || 'https://api.consigncloud.com/api/v1'; if (!apiKey) { console.error('❌ CONSIGNCLOUD_API_KEY not found in environment'); process.exit(1); } const client = new ConsignCloudClient(apiKey, apiUrl); // Test date range const DATE_FROM = '2024-01-01'; const DATE_TO = '2024-12-31'; console.log(`\n🧪 Testing All GET Endpoints`); console.log(`📅 Date Range: ${DATE_FROM} to ${DATE_TO}\n`); console.log('='.repeat(80)); async function testEndpoint(name, testFn) { try { console.log(`\n🔍 Testing: ${name}`); const startTime = Date.now(); const result = await testFn(); const duration = Date.now() - startTime; console.log(`✅ ${name} - Success (${duration}ms)`); return { name, success: true, duration, result }; } catch (error) { console.log(`❌ ${name} - Failed: ${error.message}`); return { name, success: false, error: error.message }; } } async function runTests() { const results = []; // List Operations console.log('\n📋 LIST OPERATIONS'); console.log('-'.repeat(80)); results.push(await testEndpoint('list_items', async () => { const res = await client.listItems({ limit: 5 }); console.log(` Found ${res.data.length} items (showing max 5)`); if (res.data[0]) console.log(` Sample: ${res.data[0].title}`); return res; })); results.push(await testEndpoint('list_items (with status filter)', async () => { const res = await client.listItems({ limit: 5, status: 'active' }); console.log(` Found ${res.data.length} active items`); return res; })); results.push(await testEndpoint('list_sales', async () => { const res = await client.listSales({ limit: 5 }); console.log(` Found ${res.data.length} sales (showing max 5)`); if (res.data[0]) console.log(` Sample total: ${res.data[0].total} ISK`); return res; })); results.push(await testEndpoint('list_sales (with status filter)', async () => { const res = await client.listSales({ limit: 5, status: 'finalized' }); console.log(` Found ${res.data.length} finalized sales`); return res; })); results.push(await testEndpoint('list_accounts', async () => { const res = await client.listAccounts({ limit: 5 }); console.log(` Found ${res.data.length} accounts (showing max 5)`); return res; })); results.push(await testEndpoint('list_categories', async () => { const res = await client.listCategories({ limit: 5 }); console.log(` Found ${res.data.length} categories (showing max 5)`); return res; })); results.push(await testEndpoint('list_locations', async () => { const res = await client.listLocations({ limit: 5 }); console.log(` Found ${res.data.length} locations (showing max 5)`); return res; })); results.push(await testEndpoint('list_batches', async () => { const res = await client.listBatches({ limit: 5 }); console.log(` Found ${res.data.length} batches (showing max 5)`); return res; })); // Get Single Record Operations console.log('\n🔎 GET SINGLE RECORD OPERATIONS'); console.log('-'.repeat(80)); // First get some IDs to test with const items = await client.listItems({ limit: 1 }); const sales = await client.listSales({ limit: 1 }); const accounts = await client.listAccounts({ limit: 1 }); if (items.data.length > 0) { results.push(await testEndpoint('get_item', async () => { const item = await client.getItem(items.data[0].id); console.log(` Item: ${item.title} - ${item.tag_price} ISK`); return item; })); } if (sales.data.length > 0) { results.push(await testEndpoint('get_sale', async () => { const sale = await client.getSale(sales.data[0].id); console.log(` Sale Total: ${sale.total} ISK`); return sale; })); } if (accounts.data.length > 0) { results.push(await testEndpoint('get_account', async () => { const account = await client.getAccount(accounts.data[0].id); console.log(` Account: ${account.first_name} ${account.last_name}`); return account; })); } // Statistics Operations console.log('\n📊 STATISTICS OPERATIONS'); console.log('-'.repeat(80)); results.push(await testEndpoint('get_item_stats', async () => { const stats = await client.getItemStats(); console.log(` Stats retrieved`); return stats; })); if (accounts.data.length > 0) { results.push(await testEndpoint('get_account_stats', async () => { const stats = await client.getAccountStats(accounts.data[0].id); console.log(` Account stats retrieved`); return stats; })); } results.push(await testEndpoint('get_sales_trends (FIXED)', async () => { const trends = await client.getSalesTrends({ start_date: DATE_FROM, end_date: DATE_TO, bucket_size: 'month' }); console.log(` ✨ Trends retrieved with bucket_size parameter!`); if (trends.data) console.log(` Found ${trends.data.length} data points`); return trends; })); // Search Operations console.log('\n🔍 SEARCH OPERATIONS'); console.log('-'.repeat(80)); results.push(await testEndpoint('search_suggest', async () => { const res = await client.search('test', ['items', 'accounts']); console.log(` Search results retrieved`); return res; })); results.push(await testEndpoint('suggest_field_values', async () => { const res = await client.suggestFieldValues('items', 'brand', 'a'); console.log(` Suggestions retrieved`); return res; })); // Calculation Operations (NEW) console.log('\n🧮 CALCULATION OPERATIONS (NEW - WITH LOCALE FORMATTING)'); console.log('-'.repeat(80)); results.push(await testEndpoint('calculate_inventory_value (no params)', async () => { const res = await client.calculateInventoryValue(); console.log(` Total Value: ${res.total_value_formatted} ${res.currency}`); console.log(` Total Items: ${res.total_items}`); console.log(` Average: ${res.average_value_formatted} ${res.currency}`); console.log(` Filters: ${res.filters_applied.length > 0 ? res.filters_applied.join(', ') : 'none'}`); return res; })); results.push(await testEndpoint('calculate_inventory_value (with date range)', async () => { const res = await client.calculateInventoryValue({ date_from: DATE_FROM, date_to: DATE_TO }); console.log(` 📅 Date Range: ${DATE_FROM} to ${DATE_TO}`); console.log(` Total Value: ${res.total_value_formatted} ${res.currency}`); console.log(` Total Items: ${res.total_items}`); console.log(` Filters: ${res.filters_applied.join(', ')}`); return res; })); results.push(await testEndpoint('calculate_inventory_value (with category)', async () => { const categories = await client.listCategories({ limit: 1 }); if (categories.data.length > 0) { const res = await client.calculateInventoryValue({ category: categories.data[0].id }); console.log(` Category: ${categories.data[0].name}`); console.log(` Total Value: ${res.total_value_formatted} ${res.currency}`); console.log(` Total Items: ${res.total_items}`); return res; } throw new Error('No categories found'); })); results.push(await testEndpoint('calculate_sales_totals (no params)', async () => { const res = await client.calculateSalesTotals(); console.log(` Total Revenue: ${res.total_revenue_formatted} ${res.currency}`); console.log(` Total Tax: ${res.total_tax_formatted} ${res.currency}`); console.log(` Total Sales: ${res.total_sales}`); console.log(` Average Sale: ${res.average_sale_formatted} ${res.currency}`); console.log(` Filters: ${res.filters_applied.length > 0 ? res.filters_applied.join(', ') : 'none'}`); return res; })); results.push(await testEndpoint('calculate_sales_totals (with date range)', async () => { const res = await client.calculateSalesTotals({ date_from: DATE_FROM, date_to: DATE_TO }); console.log(` 📅 Date Range: ${DATE_FROM} to ${DATE_TO}`); console.log(` Total Revenue: ${res.total_revenue_formatted} ${res.currency}`); console.log(` Total Sales: ${res.total_sales}`); console.log(` Filters: ${res.filters_applied.join(', ')}`); return res; })); if (accounts.data.length > 0) { results.push(await testEndpoint('calculate_account_metrics', async () => { const res = await client.calculateAccountMetrics({ account_id: accounts.data[0].id }); console.log(` Account: ${res.account_name}`); console.log(` Balance: ${res.current_balance_formatted} ${res.currency}`); console.log(` Inventory Value: ${res.inventory_value_formatted} ${res.currency}`); console.log(` Items Available: ${res.items_available}, Sold: ${res.items_sold}`); console.log(` Locale: ${res.locale}`); return res; })); } // Summary console.log('\n' + '='.repeat(80)); console.log('📊 TEST SUMMARY'); console.log('='.repeat(80)); const successful = results.filter(r => r.success).length; const failed = results.filter(r => !r.success).length; const totalTime = results.reduce((sum, r) => sum + (r.duration || 0), 0); console.log(`\n✅ Successful: ${successful}/${results.length}`); console.log(`❌ Failed: ${failed}/${results.length}`); console.log(`⏱️ Total Time: ${totalTime}ms`); if (failed > 0) { console.log('\n❌ Failed Tests:'); results.filter(r => !r.success).forEach(r => { console.log(` - ${r.name}: ${r.error}`); }); } console.log('\n✨ All GET endpoints tested!\n'); } runTests().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/modellers/mcp-consigncloud'

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