Skip to main content
Glama
analytics.jsโ€ข7.7 kB
// api/analytics.js - Enhanced analytics and monitoring for DAM Butler MCP // Phase 3A: Enterprise-grade observability while waiting for Brandfolder OAuth export default async function handler(req, res) { if (req.method !== 'GET') { return res.status(405).json({ error: 'Method not allowed' }); } try { // Get analytics timeframe (default: last 7 days) const { timeframe = '7d', metric = 'overview' } = req.query; const analytics = await generateAnalytics(timeframe, metric); res.status(200).json({ success: true, timeframe, metric, generated_at: new Date().toISOString(), ...analytics }); } catch (error) { console.error('Analytics error:', error); res.status(500).json({ success: false, error: 'Analytics generation failed', details: process.env.NODE_ENV === 'development' ? error.message : undefined }); } } async function generateAnalytics(timeframe, metric) { // In production, this would connect to your analytics database // For now, providing intelligent demo data based on your Phase 2 capabilities const baseDate = new Date(); const analytics = { overview: generateOverviewAnalytics(timeframe), intent_parsing: generateIntentAnalytics(timeframe), regional_performance: generateRegionalAnalytics(timeframe), asset_categories: generateAssetAnalytics(timeframe), openai_performance: generateOpenAIAnalytics(timeframe), error_tracking: generateErrorAnalytics(timeframe) }; return metric === 'overview' ? analytics : { [metric]: analytics[metric] }; } function generateOverviewAnalytics(timeframe) { // Simulated based on your actual Phase 2 capabilities return { total_requests: 2847, successful_requests: 2712, success_rate: 0.953, avg_response_time_ms: 340, top_products: [ { name: "Oracle Jet", model: "BES985", requests: 423 }, { name: "Oracle Touch", model: "BES990", requests: 381 }, { name: "Dual Boiler", model: "BES920", requests: 298 } ], top_use_cases: [ { use_case: "presentation", count: 789 }, { use_case: "social_media", count: 542 }, { use_case: "web", count: 398 }, { use_case: "amazon_aplus", count: 287 } ], regional_breakdown: { "APAC": { requests: 1423, brand: "Breville" }, "USCM": { requests: 847, brand: "Breville" }, "EMEA": { requests: 577, brand: "Sage" } } }; } function generateIntentAnalytics(timeframe) { // Analytics on your triple-fallback intelligence system return { parsing_method_distribution: { "openai_enhanced": { count: 2567, success_rate: 0.967, avg_confidence: 0.91 }, "enhanced_pattern": { count: 145, success_rate: 0.876, avg_confidence: 0.74 }, "basic_fallback": { count: 135, success_rate: 0.823, avg_confidence: 0.62 } }, confidence_distribution: { "0.95+": 1847, // Perfect matches "0.85-0.94": 543, // High confidence "0.70-0.84": 287, // Medium confidence "0.50-0.69": 170 // Low confidence but actionable }, common_intent_patterns: [ { pattern: "Product + Asset Type + Use Case", example: "Oracle Jet logo for presentation", frequency: 1203, avg_confidence: 0.94 }, { pattern: "Product + Regional Context", example: "Sage assets for UK market", frequency: 687, avg_confidence: 0.89 }, { pattern: "Business Context Specific", example: "Amazon A+ content for Dual Boiler", frequency: 432, avg_confidence: 0.92 } ] }; } function generateRegionalAnalytics(timeframe) { // Your regional theater intelligence performance return { regional_accuracy: { "auto_detection_rate": 0.943, "brand_switching_accuracy": 0.987 }, theater_performance: { "APAC": { total_requests: 1423, brand: "Breville", top_products: ["BES985", "BES990", "BES920"], avg_confidence: 0.91, common_formats: ["PNG", "JPG", "PDF"] }, "USCM": { total_requests: 847, brand: "Breville", top_products: ["BES985", "BES875", "BES990"], avg_confidence: 0.89, common_formats: ["PNG", "SVG", "PDF"] }, "EMEA": { total_requests: 577, brand: "Sage", top_products: ["SES985", "SES875", "SES990"], // Auto-converted from Breville models avg_confidence: 0.93, common_formats: ["PNG", "JPG", "SVG"] } } }; } function generateAssetAnalytics(timeframe) { // Performance across your 14 official Brandfolder sections return { section_popularity: [ { section: "Product Photography", requests: 892, success_rate: 0.961 }, { section: "Logos", requests: 743, success_rate: 0.983 }, { section: "Digital Assets (incl. Websites, Programmatic & EDM)", requests: 521, success_rate: 0.934 }, { section: "Social (incl. Videos, Statics, Stories & Keynotes)", requests: 487, success_rate: 0.917 }, { section: "Lifestyle Photography", requests: 398, success_rate: 0.952 } ], deliverable_trends: [ { deliverable: "Amazon A+", requests: 287, growth: "+23%" }, { deliverable: "Instagram/Facebook - Campaign", requests: 243, growth: "+18%" }, { deliverable: "PNG Transparent", requests: 412, growth: "+31%" }, { deliverable: "T4 Horizontal", requests: 156, growth: "+45%" } ], format_preferences: { "PNG": 1247, "JPG": 891, "SVG": 432, "PDF": 287, "MP4": 156 } }; } function generateOpenAIAnalytics(timeframe) { // Your custom OpenAI prompt performance return { api_performance: { total_calls: 2567, successful_calls: 2481, success_rate: 0.967, avg_response_time_ms: 1240, token_usage: { prompt_tokens: 1247890, completion_tokens: 321456, total_cost_usd: 47.23 } }, prompt_effectiveness: { "breville_vault_intelligence": { version: "2.1", accuracy_rate: 0.943, false_positive_rate: 0.023, false_negative_rate: 0.034 }, "regional_context_detection": { accuracy: 0.987, auto_brand_switching: 0.963 }, "business_context_parsing": { amazon_detection: 0.934, social_optimization: 0.921, presentation_formatting: 0.956 } }, confidence_calibration: { "overconfident": 0.034, // High confidence but wrong "underconfident": 0.087, // Low confidence but correct "well_calibrated": 0.879 // Confidence matches accuracy } }; } function generateErrorAnalytics(timeframe) { return { error_breakdown: { "openai_api_errors": { count: 86, rate: 0.033 }, "parsing_failures": { count: 42, rate: 0.016 }, "invalid_product_codes": { count: 78, rate: 0.030 }, "regional_detection_errors": { count: 23, rate: 0.009 } }, fallback_performance: { "openai_to_enhanced": { triggers: 86, success_rate: 0.953 }, "enhanced_to_basic": { triggers: 23, success_rate: 0.826 } }, resolution_times: { "auto_resolved": 134, "manual_intervention": 15, "unresolved": 2 }, improvement_opportunities: [ { area: "Product code variations", description: "Handle more BES/SES model variations", potential_impact: "Reduce parsing failures by ~23%" }, { area: "Ambiguous use cases", description: "Better disambiguation for 'marketing' requests", potential_impact: "Improve confidence scoring by ~12%" } ] }; }

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/vnsavitri/dam-butler-mcp'

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