#!/usr/bin/env node
// Comprehensive test script for SEC EDGAR MCP Server
const {
getCompanyCik,
searchCompanies,
getCompanySubmissions,
getCompanyFacts,
getCompanyConcept,
filterFilings
} = require('../src/edgar-api.js');
async function runComprehensiveTests() {
console.log('π§ͺ Running comprehensive SEC EDGAR API tests...\n');
try {
// Test 1: Company Search
console.log('1οΈβ£ Testing company search...');
const searchResult = await searchCompanies('Apple');
console.log(`β
Found ${searchResult.companies.length} companies matching "Apple"`);
if (searchResult.companies.length > 0) {
console.log(` First result: ${searchResult.companies[0].title} (${searchResult.companies[0].ticker})`);
}
console.log('');
// Test 2: CIK Lookup
console.log('2οΈβ£ Testing CIK lookup...');
const cik = await getCompanyCik('AAPL');
console.log(`β
AAPL CIK: ${cik}`);
console.log('');
// Test 3: Company Submissions
console.log('3οΈβ£ Testing company submissions...');
const submissions = await getCompanySubmissions('AAPL');
console.log(`β
Retrieved submissions for: ${submissions.name}`);
console.log(` Total recent filings: ${submissions.recentFilings.length}`);
console.log(` Latest filing: ${submissions.recentFilings[0].form} on ${submissions.recentFilings[0].filingDate}`);
console.log('');
// Test 4: Filing Filter
console.log('4οΈβ£ Testing filing filter...');
const filtered10K = filterFilings(submissions.recentFilings, { formType: '10-K', limit: 3 });
console.log(`β
Found ${filtered10K.length} 10-K filings`);
if (filtered10K.length > 0) {
console.log(` Most recent 10-K: ${filtered10K[0].filingDate}`);
}
console.log('');
// Test 5: Company Facts (smaller test due to large response)
console.log('5οΈβ£ Testing company facts...');
const facts = await getCompanyFacts('AAPL');
console.log(`β
Retrieved facts for: ${facts.entityName}`);
const taxonomies = Object.keys(facts.facts);
console.log(` Available taxonomies: ${taxonomies.join(', ')}`);
console.log('');
// Test 6: Company Concept
console.log('6οΈβ£ Testing company concept...');
const concept = await getCompanyConcept('AAPL', 'us-gaap', 'Assets');
console.log(`β
Retrieved concept data for: ${concept.entityName}`);
console.log(` Concept: ${concept.label}`);
const units = Object.keys(concept.units);
console.log(` Available units: ${units.join(', ')}`);
if (concept.units.USD && concept.units.USD.length > 0) {
const latestAssets = concept.units.USD[concept.units.USD.length - 1];
console.log(` Latest assets value: $${(latestAssets.val / 1000000).toFixed(0)}M (${latestAssets.end})`);
}
console.log('');
console.log('π All comprehensive tests completed successfully!');
console.log('π The SEC EDGAR MCP server is fully functional with:');
console.log(' β Company search and CIK lookup');
console.log(' β Filing history retrieval');
console.log(' β Filing filtering capabilities');
console.log(' β XBRL financial data access');
console.log(' β Specific financial concept queries');
} catch (error) {
console.error('β Test failed:', error.message);
console.error('Stack trace:', error.stack);
process.exit(1);
}
}
runComprehensiveTests();