Skip to main content
Glama

get_network_analysis

Analyze board interlocks and shareholder relationships to uncover corporate connections and influence patterns in the Spanish stock market.

Instructions

Get comprehensive network analysis of board interlocks and shareholder relationships

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • Main handler function that orchestrates network analysis by fetching data from database and computing director/shareholder network metrics and governance risks.
    async getComplexNetworkAnalysis(): Promise<any> { const companies = await this.db.getAllCompanies(); const directors = await this.db.getBoardInterlocks(); const shareholders = await this.db.getShareholderOverlap(); // Calculate network metrics const directorNetworkMetrics = this.calculateDirectorNetworkMetrics(directors); const shareholderNetworkMetrics = this.calculateShareholderNetworkMetrics(shareholders); return { director_network: directorNetworkMetrics, shareholder_network: shareholderNetworkMetrics, cross_ownership_analysis: shareholders, governance_risk_factors: await this.getGovernanceRiskFactors(companies, directors) }; }
  • Tool schema definition specifying the name, description, and empty input schema (no parameters required).
    name: 'get_network_analysis', description: 'Get comprehensive network analysis of board interlocks and shareholder relationships', inputSchema: { type: 'object', properties: {}, }, },
  • src/index.ts:649-651 (registration)
    Registration in the CallToolRequestSchema switch statement that dispatches to the analytics manager's handler.
    case 'get_network_analysis': result = await this.analytics.getComplexNetworkAnalysis(); break;
  • Helper function to compute director network metrics from board interlocks data.
    private calculateDirectorNetworkMetrics(interlocks: any[]): any { // Analyze existing interlock data const totalInterlocks = interlocks.length; const topDirectors = interlocks.slice(0, 10); // Calculate sector distribution const sectorConnections = new Map(); interlocks.forEach(interlock => { const companies = interlock.companies.split(','); // Note: We'd need sector information to do proper sector analysis // This is simplified for the API-based approach }); return { total_interlocks: totalInterlocks, interlocked_directors: topDirectors, most_connected_directors: topDirectors.slice(0, 5), network_density: totalInterlocks > 0 ? totalInterlocks / 35 : 0 // IBEX 35 companies }; }
  • Helper function to compute shareholder network metrics from overlap data.
    private calculateShareholderNetworkMetrics(overlaps: any[]): any { const multiCompanyShareholders = overlaps; const crossSectorInvestors = overlaps.filter(s => s.company_count > 2); return { multi_company_shareholders: multiCompanyShareholders, cross_sector_investors: crossSectorInvestors, total_overlap_connections: overlaps.length, average_holdings_per_investor: overlaps.length > 0 ? overlaps.reduce((sum, s) => sum + s.company_count, 0) / overlaps.length : 0 }; }

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/anbrme/ibex35-mcp-server'

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