NetSuite Analytics MCP Server
Create a powerful Model Context Protocol (MCP) server for NetSuite Analytics in minutes with our AI Gateway. This guide walks you through setting up seamless business intelligence integration with advanced analytics and instant OAuth authentication.
About NetSuite Analytics API
NetSuite Analytics provides real-time visibility into business performance with powerful reporting, dashboards, and data visualization capabilities. The Analytics API enables programmatic access to reports, searches, KPIs, and custom analytics across all NetSuite data.
Key Capabilities
- SuiteAnalytics: Advanced reporting and visualization
- Saved Searches: Custom data queries
- KPI Scorecards: Performance monitoring
- Dashboards: Real-time insights
- Workbooks: Data exploration
- Pivot Tables: Multi-dimensional analysis
- Custom Reports: Tailored analytics
- Data Export: External analysis
API Features
- Report API: Programmatic report access
- Search API: Execute saved searches
- Dashboard API: Dashboard data
- OAuth 2.0: Secure authentication
- Real-time Data: Live metrics
- Scheduled Reports: Automated delivery
- Data Sets: Custom data models
- RESTlet Support: Custom endpoints
What You Can Do with NetSuite Analytics MCP Server
The MCP server transforms NetSuite Analytics API into a natural language interface, enabling AI agents to:
Financial Analytics
-
Financial Reports
- "Generate P&L for last quarter"
- "Show balance sheet trends"
- "Compare actuals vs budget"
- "Analyze gross margins"
-
Cash Flow Analysis
- "Project cash position"
- "Track AR aging"
- "Monitor AP trends"
- "Forecast collections"
-
Profitability Analysis
- "Customer profitability"
- "Product margin analysis"
- "Department P&L"
- "Project profitability"
Sales Analytics
-
Pipeline Analysis
- "Show sales pipeline"
- "Track conversion rates"
- "Analyze win/loss"
- "Forecast accuracy"
-
Performance Metrics
- "Rep performance ranking"
- "Territory analysis"
- "Product sales trends"
- "Quota attainment"
-
Customer Analytics
- "Customer lifetime value"
- "Churn analysis"
- "Buying patterns"
- "Segmentation analysis"
Inventory Analytics
-
Stock Analysis
- "Inventory turnover"
- "Stock levels by location"
- "Aging analysis"
- "Reorder recommendations"
-
Demand Planning
- "Forecast demand"
- "Seasonal trends"
- "Safety stock analysis"
- "Lead time optimization"
-
Cost Analytics
- "Carrying costs"
- "Obsolescence tracking"
- "Cost variance analysis"
- "Landed cost reports"
HR Analytics
-
Workforce Metrics
- "Headcount analysis"
- "Turnover rates"
- "Compensation analysis"
- "Productivity metrics"
-
Talent Analytics
- "Performance distributions"
- "Skills gap analysis"
- "Succession planning"
- "Training effectiveness"
-
Cost Analysis
- "Labor cost trends"
- "Overtime analysis"
- "Benefits utilization"
- "Cost per hire"
Operational Analytics
-
Process Metrics
- "Order cycle time"
- "Fulfillment rates"
- "Process efficiency"
- "Quality metrics"
-
Vendor Analytics
- "Vendor performance"
- "Purchase price variance"
- "On-time delivery"
- "Quality scores"
-
Project Analytics
- "Project profitability"
- "Resource utilization"
- "Milestone tracking"
- "Budget variance"
KPI Dashboards
-
Executive Dashboards
- "CEO dashboard"
- "CFO metrics"
- "Department KPIs"
- "Board reporting"
-
Operational Dashboards
- "Daily operations"
- "Real-time monitoring"
- "Exception reporting"
- "Alert triggers"
-
Custom Dashboards
- "Role-based views"
- "Personalized metrics"
- "Mobile dashboards"
- "TV dashboards"
Advanced Analytics
-
Predictive Analytics
- "Sales forecasting"
- "Demand prediction"
- "Cash flow projection"
- "Risk assessment"
-
What-If Analysis
- "Scenario planning"
- "Sensitivity analysis"
- "Budget scenarios"
- "Growth modeling"
-
Data Mining
- "Pattern discovery"
- "Anomaly detection"
- "Correlation analysis"
- "Trend identification"
Data Export & Integration
-
Report Distribution
- "Schedule reports"
- "Email delivery"
- "FTP export"
- "API access"
-
Data Warehouse
- "ETL processes"
- "Data sync"
- "Historical archival"
- "External analytics"
-
Visualization Tools
- "Export to Tableau"
- "Power BI integration"
- "Excel connectivity"
- "Custom visualizations"
Prerequisites
- Access to Cequence AI Gateway
- NetSuite account with Analytics
- SuiteAnalytics Connect license (for advanced features)
- API permissions
Step 1: Configure NetSuite Analytics Access
1.1 Enable Analytics Features
- Go to Setup > Company > Enable Features
- Under Analytics tab, enable:
- SuiteAnalytics
- SuiteAnalytics Workbook
- Custom Records
- Saved Searches
1.2 Create Analytics Role
- Go to Setup > Users/Roles > Manage Roles
- Create new role:
- Name: "Analytics API User"
- Permissions:
- Reports: Full
- Lists: View
- Custom Records: View
1.3 API Configuration
- Create integration record
- Enable OAuth 2.0
- Configure permissions
- Note credentials
Step 2-4: Standard Setup
Follow standard steps to access AI Gateway, find NetSuite Analytics API, and create MCP server.
Step 5: Configure API Endpoints
- Base URL:
https://{accountId}.suitetalk.api.netsuite.com
- Select endpoints:
- Report endpoints
- Search endpoints
- Dashboard endpoints
- Export endpoints
- Click Next
Step 6: MCP Server Configuration
- Name: "NetSuite Analytics"
- Description: "Business intelligence and reporting"
- Configure production mode
- Click Next
Step 7: Configure Authentication
- Authentication Type: OAuth 2.0
- Configure OAuth with account ID
- Enter credentials
- Enable token refresh
Available NetSuite Analytics API Scopes
Reporting
-
Financial Reports
- Income statements
- Balance sheets
- Cash flow
- Custom financial
-
Operational Reports
- Sales reports
- Inventory reports
- Customer reports
- Vendor reports
Analytics
-
Saved Searches
- Execute searches
- Export results
- Schedule runs
- Manage criteria
-
KPI Monitoring
- Scorecard access
- Metric tracking
- Threshold alerts
- Trend analysis
Data Access
-
Data Export
- CSV export
- XML export
- API streaming
- Bulk download
-
Real-time Data
- Live dashboards
- Streaming metrics
- Event triggers
- Push notifications
Recommended Scope Combinations
For Analysts:
Reports (Full)
Saved Searches (Full)
Dashboards (Read)
Export (Full)
For Executives:
Dashboards (Read)
KPIs (Read)
Reports (Read)
Alerts (Manage)
Step 8-10: Complete Setup
Configure security, choose deployment, and deploy.
Using Your NetSuite Analytics MCP Server
With Claude Desktop
{
"servers": {
"netsuite-analytics": {
"url": "your-mcp-server-url",
"auth": {
"type": "oauth2",
"client_id": "your-client-id",
"client_secret": "your-client-secret",
"account_id": "your-account-id"
}
}
}
}
Natural Language Commands
- "Show me revenue by product line for last quarter"
- "What's our current cash position?"
- "Compare this month's sales to last year"
- "Generate executive dashboard for board meeting"
- "Find customers with declining purchase trends"
API Integration Example
// Initialize MCP client
const mcpClient = new MCPClient({
serverUrl: 'your-mcp-server-url',
auth: {
type: 'oauth2',
clientId: 'your-client-id',
clientSecret: 'your-client-secret',
accountId: 'your-account-id'
}
});
// Financial analytics
const financialReport = await mcpClient.netsuite.analytics.runFinancialReport({
reportType: 'IncomeStatement',
period: {
type: 'quarter',
year: 2025,
quarter: 1
},
comparePeriod: {
type: 'quarter',
year: 2024,
quarter: 1
},
subsidiary: 'all',
departments: 'all',
includeSubAccounts: true
});
console.log('Q1 2025 Income Statement:');
console.log(`Revenue: $${financialReport.revenue.current.toLocaleString()}`);
console.log(`YoY Growth: ${financialReport.revenue.growthPercent}%`);
console.log(`Gross Profit: $${financialReport.grossProfit.current.toLocaleString()}`);
console.log(`Gross Margin: ${financialReport.grossMargin.current}%`);
console.log(`Net Income: $${financialReport.netIncome.current.toLocaleString()}`);
// Sales analytics
const salesAnalytics = await mcpClient.netsuite.analytics.runSalesAnalysis({
dateRange: {
start: '2025-01-01',
end: '2025-01-31'
},
metrics: [
'totalRevenue',
'orderCount',
'averageOrderValue',
'conversionRate',
'customerCount'
],
groupBy: ['salesRep', 'productCategory', 'region'],
compareToLastYear: true
});
// Top performers
console.log('\nTop Sales Reps:');
for (const rep of salesAnalytics.topPerformers.slice(0, 5)) {
console.log(`${rep.name}: $${rep.revenue.toLocaleString()} (${rep.deals} deals)`);
console.log(` Quota Attainment: ${rep.quotaAttainment}%`);
console.log(` Win Rate: ${rep.winRate}%`);
}
// Customer analytics
const customerAnalytics = await mcpClient.netsuite.analytics.analyzeCustomers({
analysis: 'lifetime_value',
segments: ['industry', 'size', 'region'],
includeChurn: true,
includePredictions: true
});
console.log('\nCustomer Lifetime Value Analysis:');
console.log(`Average CLV: $${customerAnalytics.averageCLV.toLocaleString()}`);
console.log(`Churn Rate: ${customerAnalytics.churnRate}%`);
console.log(`\nTop Segments:`);
for (const segment of customerAnalytics.topSegments) {
console.log(`${segment.name}: $${segment.averageCLV.toLocaleString()}`);
console.log(` Retention: ${segment.retentionRate}%`);
}
// Inventory analytics
const inventoryMetrics = await mcpClient.netsuite.analytics.getInventoryMetrics({
locations: 'all',
categories: ['finished_goods', 'raw_materials'],
metrics: [
'turnoverRatio',
'daysOnHand',
'stockoutRate',
'excessStock',
'carryingCost'
]
});
console.log('\nInventory Performance:');
console.log(`Turnover Ratio: ${inventoryMetrics.turnoverRatio}`);
console.log(`Days on Hand: ${inventoryMetrics.averageDaysOnHand}`);
console.log(`Stockout Rate: ${inventoryMetrics.stockoutRate}%`);
console.log(`Excess Stock Value: $${inventoryMetrics.excessStockValue.toLocaleString()}`);
// KPI monitoring
const kpiScorecard = await mcpClient.netsuite.analytics.getKPIScorecard({
scorecardId: 'executive_dashboard',
period: 'currentMonth',
includeAlerts: true
});
console.log('\nExecutive KPI Scorecard:');
for (const kpi of kpiScorecard.kpis) {
const status = kpi.actual >= kpi.target ? '' : '';
console.log(`${status} ${kpi.name}: ${kpi.actual} (Target: ${kpi.target})`);
if (kpi.alert) {
console.log(` Alert: ${kpi.alert.message}`);
}
}
// Predictive analytics
const salesForecast = await mcpClient.netsuite.analytics.predictSales({
forecastPeriod: 3, // months
method: 'ml_ensemble',
includeSeasonality: true,
confidenceLevel: 0.95,
factors: [
'historical_sales',
'pipeline_data',
'market_trends',
'seasonality'
]
});
console.log('\nSales Forecast:');
for (const month of salesForecast.predictions) {
console.log(`${month.period}:`);
console.log(` Forecast: $${month.forecast.toLocaleString()}`);
console.log(` Range: $${month.lowerBound.toLocaleString()} - $${month.upperBound.toLocaleString()}`);
console.log(` Confidence: ${month.confidence}%`);
}
// Custom saved search
const customSearch = await mcpClient.netsuite.analytics.runSavedSearch({
searchId: 'customsearch_high_value_customers',
filters: {
'formulanumeric': {
formula: '{today} - {lastorderdate}',
operator: 'greaterthan',
value: 90
}
},
columns: ['companyname', 'email', 'lastorderdate', 'formulacurrency']
});
console.log('\nHigh Value Customers - No Recent Orders:');
for (const customer of customSearch.results) {
console.log(`${customer.companyname}`);
console.log(` Last Order: ${customer.lastorderdate}`);
console.log(` Lifetime Value: $${customer.formulacurrency.toLocaleString()}`);
}
// Dashboard data
const dashboard = await mcpClient.netsuite.analytics.getDashboardData({
dashboardId: 'sales_operations',
refresh: true,
format: 'detailed'
});
// What-if analysis
const scenario = await mcpClient.netsuite.analytics.runScenarioAnalysis({
baseScenario: 'current_forecast',
adjustments: [
{
variable: 'sales_growth',
change: 0.15 // 15% increase
},
{
variable: 'cost_reduction',
change: -0.05 // 5% reduction
}
],
metrics: ['revenue', 'profit', 'cash_flow'],
period: 'next_12_months'
});
console.log('\nScenario Analysis Results:');
console.log('If sales grow 15% and costs reduce 5%:');
console.log(`Revenue Impact: +$${scenario.revenueImpact.toLocaleString()}`);
console.log(`Profit Impact: +$${scenario.profitImpact.toLocaleString()}`);
console.log(`Cash Flow Impact: +$${scenario.cashFlowImpact.toLocaleString()}`);
// Report scheduling
const scheduledReport = await mcpClient.netsuite.analytics.scheduleReport({
reportId: 'monthly_financial_package',
schedule: {
frequency: 'monthly',
dayOfMonth: 5,
time: '08:00',
timezone: 'America/New_York'
},
recipients: ['cfo@company.com', 'board@company.com'],
format: 'pdf',
includeCharts: true
});
// Real-time monitoring
const metricsStream = await mcpClient.netsuite.analytics.streamMetrics({
metrics: ['revenue', 'orders', 'cash_position'],
interval: 300 // 5 minutes
});
metricsStream.on('update', (data) => {
console.log(`Real-time Update:`);
console.log(`Revenue Today: $${data.revenue.today.toLocaleString()}`);
console.log(`Orders: ${data.orders.count}`);
console.log(`Cash Position: $${data.cash.current.toLocaleString()}`);
if (data.alerts.length > 0) {
handleAlerts(data.alerts);
}
});
Common Use Cases
Financial Reporting
- Monthly/quarterly financials
- Budget vs actual analysis
- Cash flow projections
- Profitability analysis
Sales Analytics
- Pipeline management
- Performance tracking
- Territory analysis
- Commission calculations
Operational Intelligence
- Inventory optimization
- Supply chain analytics
- Customer behavior
- Process efficiency
Strategic Planning
- Forecasting
- Scenario modeling
- Market analysis
- Growth planning
Security Best Practices
-
Data Access:
- Role-based permissions
- Row-level security
- Field restrictions
- Audit trails
-
Report Security:
- Sensitive data masking
- Export controls
- Distribution limits
- Watermarking
-
API Security:
- Rate limiting
- Query restrictions
- Result set limits
- Cache management
Troubleshooting
Common Issues
-
Performance
- Optimize saved searches
- Use summary data
- Implement caching
- Schedule heavy reports
-
Data Accuracy
- Verify data sources
- Check calculations
- Validate filters
- Review joins
-
Access Issues
- Check permissions
- Verify roles
- Test searches
- Review criteria
Getting Help
- Documentation: AI Gateway Docs
- Support: support@cequence.ai
- NetSuite Help: help.netsuite.com