Skip to main content
Glama
anbrme
by anbrme

IBEX 35 MCP Server

A Model Context Protocol (MCP) server that provides Claude and other LLMs with comprehensive access to Spanish IBEX 35 stock market data, corporate governance information, and financial analytics.

🎯 What This Enables

Transform your AI assistant into a Spanish corporate intelligence expert:

  • Corporate Governance Analysis - Board compositions, director interlocks, political affiliations

  • Financial Analytics - Market cap, P/E ratios, sector analysis, performance metrics

  • Shareholder Intelligence - Ownership structures, institutional holdings, cross-holdings

  • Board Interlock Detection - Directors serving on multiple boards

  • Political Connections - Government-appointed directors and political backgrounds

  • Real-time Market Data - Current prices, volumes, daily changes, historical trends

Perfect for financial research, corporate governance studies, investment analysis, and academic research on Spanish markets.

Related MCP server: DataBursatil MCP Server

Features

Core Data Access

  • Company Information: All IBEX 35 companies with real-time prices and key metrics

  • Historical Data: OHLCV data, performance tracking, and trend analysis

  • Shareholders: Ownership structures, concentration analysis, and cross-holdings

  • Board Directors: Corporate governance, board interlocks, and executive relationships

  • News & Sentiment: Recent news with sentiment analysis and relevance scoring

  • ESG Data: Environmental, Social, and Governance scores and metrics

Advanced Analytics ⚡ ENHANCED

  • Natural Language Processing: Ask complex questions in plain English

  • Company Comparisons: Side-by-side analysis across financial, governance, and performance metrics

  • Trend Analysis & Forecasting: Advanced price trend analysis with simple forecasting capabilities

  • Investment Risk Assessment: Comprehensive risk evaluation across market, governance, and operational factors

  • Analyst Report Generation: Professional company deep-dives, sector overviews, and governance analysis

  • Investment Opportunity Screening: Filter and rank companies based on custom criteria

  • Network Analysis: Board interlock analysis, shareholder overlap detection

  • Governance Risk Assessment: Red flag identification, concentration metrics

  • Market Correlation: Sector performance analysis and correlation studies

  • Lobbying Intelligence: EU transparency data and political influence tracking

Special Features

  • Real-time Sync: Data synchronized from Google Sheets and multiple sources

  • Weekly Reports: Automated market analysis and governance highlights

  • Custom Queries: Execute safe SQL queries on the database

  • Comprehensive Indexing: Optimized for complex relationship queries

🚀 Quick Start

Prerequisites

  • Node.js 18+

  • Claude Desktop app (or any MCP-compatible client)

Installation

Option 1: NPM Global Install (Recommended)

npm install -g ibex35-mcp-server

Option 2: From Source

git clone https://github.com/anbrme/ibex35-mcp-server.git
cd ibex35-mcp-server
npm install
npm run build

Configuration

Environment Variables

  • IBEX35_API_URL: URL to your Cloudflare Worker API (defaults to https://ibex35-api.ncdata.eu)

  • IBEX35_API_KEY: Optional API key for authentication (if your worker requires it)

Cloudflare Worker Setup

The server connects to your existing Cloudflare Worker that provides API access to the D1 database. No local database setup is required.

Usage

Standalone Mode

npm start

Claude Desktop Configuration

Add to your claude_desktop_config.json:

For NPM Install:

{
  "mcpServers": {
    "ibex35-database": {
      "command": "ibex35-mcp",
      "env": {
        "IBEX35_API_URL": "https://ibex35-api.ncdata.eu"
      }
    }
  }
}

For Source Install:

{
  "mcpServers": {
    "ibex35-database": {
      "command": "node",
      "args": ["/path/to/ibex35-mcp-server/dist/index.js"],
      "env": {
        "IBEX35_API_URL": "https://ibex35-api.ncdata.eu"
      }
    }
  }
}

Config file locations:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Start Using

  1. Restart Claude Desktop completely

  2. Start a new conversation

  3. Ask questions about IBEX 35 data!

Available Tools

Company Data

  • get_all_companies - List all IBEX 35 companies with current data

  • get_company_by_symbol - Detailed company information by symbol

  • get_companies_by_sector - Filter companies by sector

  • get_companies_with_pe_ratio - Filter by P/E ratio range

Governance & Leadership

  • get_company_directors - Board directors for a company

  • get_board_interlocks - Directors serving on multiple boards

  • get_directors_by_name - Search directors across all companies

Ownership Analysis

  • get_company_shareholders - Shareholder structure for a company

  • get_shareholder_overlap - Shareholders with stakes in multiple companies

  • get_top_shareholders_by_sector - Top shareholders by sector

Market Data

  • get_historical_prices - Historical OHLCV data

  • get_top_performers - Best/worst performers over period

News & Sentiment

  • get_recent_news - Latest news articles with sentiment

  • get_news_by_sentiment - Filter news by sentiment (positive/negative/neutral)

Lobbying & Transparency

  • get_lobbying_meetings - EU lobbying meetings and activities

  • get_most_active_lobbyists - Organizations with most lobbying activity

Advanced Analytics

  • get_network_analysis - Complete network analysis of governance relationships

  • get_sector_correlation_analysis - Sector performance correlation analysis

ENHANCED AI-Powered Analysis

  • analyze_natural_query - Process complex natural language queries with intelligent routing

  • compare_companies - Multi-dimensional company comparison (financial, governance, performance)

  • analyze_trends - Advanced trend analysis with forecasting (company, sector, market, correlation)

  • assess_investment_risk - Comprehensive risk assessment (market, governance, sector, liquidity, concentration)

  • generate_analyst_report - Professional analyst reports (company deep-dive, sector overview, governance analysis)

  • screen_opportunities - Investment opportunity screening with custom criteria and scoring

Reporting

  • get_weekly_reports - Generated weekly market and governance reports

  • get_esg_scores - ESG scores and sustainability metrics

Custom Access

  • execute_custom_query - Execute custom SQL queries (SELECT only)

💡 Example Queries

Once connected, ask Claude natural language questions about IBEX 35 data:

Corporate Governance

"Show me all directors who serve on multiple IBEX 35 boards"
"Which directors have political backgrounds or government connections?"
"Find potential conflicts of interest in IBEX 35 corporate governance"
"Who are the most connected directors in the Spanish corporate network?"

Financial Analysis

"What are the largest IBEX 35 companies by market capitalization?"
"Show me companies with P/E ratios below 15"
"Which energy sector companies are in IBEX 35?"
"Compare the performance of banking vs telecommunications stocks"

Shareholder Intelligence

"Find institutional investors with holdings in multiple IBEX 35 companies"
"Show me the ownership structure of Banco Santander"
"Which companies have the most concentrated ownership?"
"Identify shareholder overlaps in the energy sector"

Market Performance

"What are the best performing IBEX 35 stocks this month?"
"Show me companies that have dropped more than 10% recently"
"Compare sector performance across IBEX 35"
"Find undervalued companies based on P/E ratios"

Research & Analysis

"Analyze the political connections within IBEX 35 boards"
"Show me recent news sentiment for renewable energy companies"
"Which companies have the most diverse boards?"
"Find companies with suspicious governance patterns"

ENHANCED Natural Language Analysis

"Which banking stocks have grown most in the last month?"
"Show me companies with high governance risk and explain why"
"Compare Santander vs BBVA across all metrics"
"Find undervalued large-cap companies with good governance scores"
"Generate a comprehensive report on the energy sector outlook"
"What are the price trends for telecommunications stocks?"
"Assess the investment risks of the banking sector"
"Screen for opportunities: P/E under 15, market cap over 10B, exclude energy"

Security

  • Read-only Access: Database connection is read-only

  • Query Restrictions: Only SELECT statements allowed in custom queries

  • Input Validation: All parameters are validated and sanitized

  • No Dangerous Operations: DROP, DELETE, UPDATE, etc. are blocked

Database Schema

The server works with a comprehensive schema including:

  • companies: Core company data and metrics

  • company_directors: Board and executive information

  • company_shareholders: Ownership structures

  • historical_prices: Daily OHLCV market data

  • company_news: News articles with sentiment analysis

  • lobbying_meetings: EU transparency and lobbying data

  • company_esg: ESG scores and sustainability metrics

  • weekly_reports: Generated analytical reports

Development

# Development mode with auto-reload
npm run dev

# Build TypeScript
npm run build

# Start production server
npm start

Contributing

This MCP server is designed to work with the IBEX 35 Dashboard ecosystem. Ensure any changes maintain compatibility with the existing database schema and sync processes.

📊 Data Sources

This MCP server aggregates data from authoritative Spanish sources:

  • Madrid Stock Exchange (BME) - Real-time market data and trading information

  • CNMV - Official regulatory filings and shareholder disclosures

  • EU Transparency Register - Corporate lobbying activities and meetings

  • Corporate Websites - Board compositions and governance structures

  • Financial News Sources - Market sentiment and company-specific news

🔒 Privacy & Security

  • No API keys required - Uses publicly available data sources

  • No personal data - Only publicly disclosed corporate information

  • No tracking - Direct API access without data collection

  • Open source - Full transparency in data processing and analysis

  • Read-only access - Cannot modify or delete any data

📈 Use Cases

Financial Professionals

  • Due diligence and investment research

  • Risk assessment through governance analysis

  • Market trend identification and sector analysis

  • Competitive intelligence and benchmarking

Academic Researchers

  • Corporate governance studies and analysis

  • Political economy research on Spain

  • Network analysis of corporate relationships

  • Financial market behavior studies

Compliance & Risk

  • Board independence verification

  • Political connection identification

  • Ownership concentration analysis

  • Governance red flag detection

Journalists & Analysts

  • Investigative research on corporate connections

  • Political influence mapping

  • Market analysis and reporting

  • Corporate transparency assessment

🛠 Troubleshooting

Claude doesn't recognize the server

  1. Check config file location and JSON syntax

  2. Restart Claude Desktop completely (⌘+Q, wait, reopen)

  3. Verify Node.js version (18+) and installation

Installation issues

# Check Node.js version
node --version

# Clear npm cache if needed
npm cache clean --force

# Reinstall
npm install -g ibex35-mcp-server

API connectivity

The server uses public APIs - no authentication required. If you see errors:

# Test API accessibility
curl https://ibex35-api.ncdata.eu/api/companies

🤝 Contributing

Contributions welcome! Areas for enhancement:

  • Additional data sources and metrics

  • Performance optimizations

  • New analytical capabilities

  • Documentation improvements

📄 License

MIT License - Free for commercial and non-commercial use.

🌟 Support & Community

  • GitHub Issues: Report bugs and request features

  • GitHub Discussions: Community support and ideas

  • Web Dashboard: Try the data through the web interface

  • Model Recommendation: Works best with Claude 4 Sonnet


Made with ❤️ for the Claude and MCP community

Bringing Spanish corporate intelligence to AI assistants worldwide

Available Tools

27 tools
analyze_natural_queryC

Process and execute complex natural language queries about companies, financials, governance, or markets

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesNatural language query (e.g., "Which banking stocks have grown most in the last month?", "Show me companies with high governance risk", "Compare energy sector performance")
contextNoOptional context or previous query results to build upon

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'process and execute' but doesn't clarify what execution entails—whether it returns data, generates reports, or performs analyses. There's no information about performance characteristics, error handling, or output format. The description is too vague about the tool's actual behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core functionality. It avoids unnecessary words and gets straight to the point. However, it could be slightly more structured by explicitly mentioning the tool's domain scope upfront.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity implied by 'complex natural language queries' and the lack of annotations and output schema, the description is insufficient. It doesn't explain what kind of results to expect, how queries are processed, or any limitations. For a tool with no structured output documentation, the description should provide more context about the execution outcome.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents both parameters thoroughly. The description doesn't add any meaningful semantics beyond what's in the schema—it doesn't explain how the 'query' parameter should be structured beyond 'natural language' or how 'context' integrates with processing. Baseline 3 is appropriate since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Process and execute complex natural language queries about companies, financials, governance, or markets.' It specifies the verb ('process and execute'), resource ('natural language queries'), and domain scope. However, it doesn't explicitly differentiate from siblings like 'execute_custom_query' or 'analyze_trends' that might overlap in functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With many sibling tools available (e.g., 'analyze_trends', 'compare_companies', 'execute_custom_query'), there's no indication of what makes this tool distinct or when it should be preferred over others. Usage is implied by the description but not explicitly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

assess_investment_riskC

Comprehensive risk assessment for companies or sectors including market, governance, and operational risks

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYesCompany symbol, sector name, or portfolio of companies
risk_typesNoTypes of risk to assess

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'comprehensive risk assessment' but doesn't specify what that entails operationally—such as data sources, computation methods, output format, or limitations. For a tool that presumably analyzes complex financial/operational data, this lack of behavioral context is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose. It avoids redundancy and wastes no words, though it could potentially benefit from slightly more detail given the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a risk assessment tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the assessment returns, how results are structured, or any behavioral aspects like data freshness or limitations. Given the complexity implied by analyzing market, governance, and operational risks, more context is needed for effective agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds minimal value beyond the schema—it implies the 'target' parameter can be companies or sectors, and lists some risk types that overlap with the enum in 'risk_types'. However, it doesn't provide additional context like examples or usage scenarios for parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Comprehensive risk assessment for companies or sectors including market, governance, and operational risks.' It specifies the verb ('assessment') and resource ('companies or sectors'), and lists key risk types. However, it doesn't explicitly differentiate from sibling tools like 'get_esg_scores' or 'screen_opportunities' which might overlap in risk-related analysis.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context for selection, or exclusions. Given sibling tools like 'analyze_trends' or 'compare_companies', there's no indication of when this risk assessment tool is preferred over other analytical options.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_companiesC

Compare multiple companies across various metrics (financial, governance, market performance)

ParametersJSON Schema
NameRequiredDescriptionDefault
companiesYesList of company symbols or names to compare
metricsNoMetrics to compare (defaults to all if not specified)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the tool compares companies across metrics but does not specify how the comparison is performed (e.g., side-by-side table, aggregated scores), what the output format is, or any limitations (e.g., number of companies, data freshness). For a tool with no annotations, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose. It avoids redundancy and wastes no words, though it could be slightly more structured by separating key points. Overall, it is appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no annotations, no output schema, and involves comparing multiple companies across metrics, the description is incomplete. It does not explain the comparison output format, potential limitations, or how results are presented, which are critical for an agent to use the tool effectively. The high schema coverage helps, but behavioral aspects are under-specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents the parameters 'companies' and 'metrics' with descriptions and defaults. The description adds minimal value beyond the schema by listing example metric types (financial, governance, market performance), but it does not provide additional context like metric definitions or comparison methodology. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: comparing multiple companies across various metrics. It specifies the verb 'compare' and the resources 'companies' and 'metrics' (financial, governance, market performance). However, it does not explicitly differentiate from sibling tools like 'get_sector_correlation_analysis' or 'screen_opportunities', which might also involve comparisons, so it falls short of a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention sibling tools or contexts where this tool is preferred, such as for multi-company analysis versus single-company tools like 'get_company_by_symbol'. Without any usage context or exclusions, the agent must infer when to apply it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

execute_custom_queryB

Execute a custom SQL query on the database (SELECT only)

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYesSQL SELECT query to execute
paramsNoOptional parameters for the query

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but offers minimal behavioral disclosure. It mentions 'SELECT only' which implies read-only behavior, but doesn't address permissions needed, rate limits, result format, pagination, error handling, or query execution constraints. The description doesn't contradict annotations (none exist), but provides inadequate transparency for a database query tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise single sentence with zero wasted words. Front-loaded with the core purpose, and the parenthetical '(SELECT only)' efficiently conveys a critical constraint. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a database query tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what the tool returns (result format, structure, or limitations), nor does it address safety considerations despite the 'SELECT only' hint. Given the complexity of SQL execution and lack of structured metadata, more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents both parameters. The description adds no additional parameter semantics beyond what's in the schema. The baseline of 3 is appropriate when the schema does all the parameter documentation work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Execute a custom SQL query') and resource ('on the database'), with explicit scope limitation ('SELECT only'). It distinguishes this tool from siblings by focusing on raw SQL execution rather than predefined analytical functions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context through 'SELECT only' restriction, suggesting this is for read-only data retrieval. However, it provides no explicit guidance on when to use this vs. the many specialized sibling tools (e.g., get_historical_prices, get_esg_scores), nor any prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_analyst_reportC

Generate a comprehensive analyst report for a company, sector, or market theme

ParametersJSON Schema
NameRequiredDescriptionDefault
subjectYesCompany symbol, sector name, or theme to analyze
report_typeYesType of report to generate
include_chartsNoWhether to include data visualizations (text-based)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions generating a 'comprehensive' report but lacks details on execution time, data sources, permissions required, rate limits, or output format (e.g., text, PDF). For a tool that likely involves complex data processing, this is a significant gap, leaving the agent with minimal behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose without unnecessary details. Every word earns its place, making it easy for an agent to parse quickly. There is no redundancy or wasted verbiage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of generating analyst reports, lack of annotations, and no output schema, the description is incomplete. It doesn't address behavioral aspects like data sources, processing time, or output format, which are critical for an agent to use the tool effectively. The high schema coverage doesn't compensate for these missing contextual elements.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters (subject, report_type, include_charts). The description adds no additional meaning beyond implying the scope ('company, sector, or market theme'), which is covered by the schema's subject description. Thus, it meets the baseline for high schema coverage without compensating with extra insights.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Generate a comprehensive analyst report for a company, sector, or market theme.' It specifies the verb ('generate') and resource ('analyst report'), and distinguishes it from siblings like 'get_weekly_reports' (which likely retrieves existing reports) or 'analyze_trends' (which may not produce formal reports). However, it doesn't explicitly differentiate from all siblings, such as 'assess_investment_risk' (which might produce similar outputs), keeping it from a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context for selection among report types, or comparisons to siblings like 'assess_investment_risk' or 'get_sector_correlation_analysis'. The agent must infer usage from the description alone, which is insufficient for optimal tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_all_companiesB

Get all IBEX 35 companies with current prices and key metrics

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It states what data is retrieved but doesn't cover aspects like rate limits, data freshness, authentication needs, or potential errors. This is a significant gap for a data-fetching tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the key information (verb, resource, scope, data) with zero waste. Every word earns its place, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is adequate but has clear gaps. It covers the purpose and data scope but lacks behavioral details like data format or limitations, making it minimally viable for a read-only tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the absence of inputs. The description adds value by specifying the scope (IBEX 35 companies) and data returned (current prices and key metrics), which compensates appropriately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'IBEX 35 companies', specifying the scope and data returned (current prices and key metrics). It distinguishes from siblings like get_companies_by_sector or get_company_by_symbol by focusing on all companies in the index, though it doesn't explicitly contrast them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as get_companies_by_sector or get_top_performers. The description implies usage for retrieving all companies in the IBEX 35, but lacks explicit context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_board_interlocksA

Find directors who serve on multiple IBEX 35 company boards

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states what the tool does but lacks critical behavioral details: it doesn't specify whether this is a read-only operation (implied by 'Find'), what data sources or timeframes are used, how results are structured, or any limitations (e.g., rate limits, authentication needs). For a tool with zero annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose without any wasted words. It directly answers 'what does this tool do?' in a compact form, making it easy for an AI agent to parse and understand quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (identifying interlocks across multiple companies) and the lack of both annotations and an output schema, the description is minimally adequate. It specifies the resource scope but doesn't address behavioral aspects like data freshness, result format, or error conditions. For a tool with no structured metadata, more context would be helpful to ensure reliable agent usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the absence of inputs. The description adds value by clarifying the semantic scope ('IBEX 35 company boards'), which isn't captured in the empty schema. This compensates adequately, though a perfect score is reserved for cases where parameter semantics are more complex.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Find directors') and the precise resource scope ('who serve on multiple IBEX 35 company boards'). It effectively distinguishes this tool from siblings like 'get_company_directors' (which gets directors for a single company) and 'get_directors_by_name' (which finds directors by name), making the purpose unambiguous and well-differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for identifying directors with board interlocks within the IBEX 35 index, but provides no explicit guidance on when to use this tool versus alternatives like 'get_network_analysis' (which might include interlock analysis) or 'get_shareholder_overlap'. It also doesn't mention prerequisites or exclusions, leaving usage context somewhat open to interpretation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_companies_by_sectorC

Get companies filtered by sector

ParametersJSON Schema
NameRequiredDescriptionDefault
sectorYesSector name or partial match (e.g., Banking, Technology, Energy)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure but only states the basic filtering action. It doesn't mention whether this is a read-only operation, what the return format looks like (e.g., list of companies with basic details), potential rate limits, or any authentication requirements. For a tool with zero annotation coverage, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that communicates the core functionality without any wasted words. It's appropriately sized for a simple filtering tool and gets straight to the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what information is returned about companies (e.g., names, symbols, financial data) or how results are structured. For a tool that presumably returns multiple company records, more context about the output would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% description coverage, with the 'sector' parameter well-documented in the schema itself (including examples like 'Banking, Technology, Energy'). The description adds no additional parameter semantics beyond what's already in the schema, so it meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get') and resource ('companies') with a specific filter ('by sector'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get_all_companies' or 'get_top_shareholders_by_sector' beyond the basic filtering aspect.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives like 'get_all_companies' (for unfiltered lists) or 'compare_companies' (for detailed comparisons). The description implies usage for sector-based filtering but offers no context about prerequisites, limitations, or when other tools might be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_companies_with_pe_ratioB

Get companies filtered by P/E ratio range

ParametersJSON Schema
NameRequiredDescriptionDefault
minPENoMinimum P/E ratio
maxPENoMaximum P/E ratio

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'gets' companies, implying a read operation, but lacks details on permissions, rate limits, pagination, or output format. The description does not contradict annotations, but it fails to provide essential behavioral context for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, with no redundant or verbose elements, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (filtering by numeric range), no annotations, and no output schema, the description is minimally adequate. It specifies the filtering criterion but lacks details on output format, error handling, or integration with other tools. The description is complete enough for basic use but leaves gaps in behavioral and contextual information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both parameters ('minPE' and 'maxPE') clearly documented in the schema. The description adds no additional meaning beyond the schema, such as explaining the P/E ratio concept, default values, or handling of edge cases. Baseline 3 is appropriate when the schema fully covers parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get companies filtered by') and the resource ('companies'), specifying the filtering criterion ('P/E ratio range'). It distinguishes from generic sibling tools like 'get_all_companies' by focusing on P/E ratio filtering, but does not explicitly differentiate from other filtering tools like 'get_companies_by_sector' beyond the criterion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, context for P/E ratio analysis, or comparisons to other filtering tools (e.g., 'get_companies_by_sector' or 'screen_opportunities'), leaving the agent to infer usage based solely on the tool name and description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_company_by_symbolC

Get detailed information for a specific company by its stock symbol

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesStock symbol (e.g., SAN, TEF, IBE)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Get detailed information' implies a read-only operation, it doesn't specify what 'detailed information' includes, whether there are rate limits, authentication requirements, error handling, or response format. This leaves significant gaps for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a simple lookup tool and front-loads the core purpose without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations and no output schema, the description is incomplete. It doesn't explain what 'detailed information' includes, how results are structured, or potential limitations. Given the complexity implied by sibling tools and the lack of structured data, more context is needed to guide effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description mentions the parameter ('by its stock symbol') but adds minimal semantic value beyond what's in the schema, which has 100% coverage and clearly documents the 'symbol' parameter with examples. The baseline score of 3 is appropriate since the schema does the heavy lifting, though the description doesn't enhance understanding of parameter usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get detailed information') and resource ('for a specific company'), specifying the lookup method ('by its stock symbol'). It distinguishes from siblings like 'get_all_companies' by focusing on a single company, but doesn't explicitly differentiate from other company-specific tools like 'get_company_directors' or 'get_company_shareholders'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With many sibling tools that also retrieve company-related data (e.g., 'get_company_directors', 'get_esg_scores', 'get_historical_prices'), there's no indication of what makes this tool distinct or when it should be preferred over others.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_company_directorsB

Get board directors for a specific company

ParametersJSON Schema
NameRequiredDescriptionDefault
companyIdYesCompany ID or use get_company_by_symbol first to get ID

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states what the tool does but doesn't describe how it behaves: no information about return format (e.g., list of directors with details), pagination, rate limits, authentication needs, or error handling. For a read operation with no annotation coverage, this leaves significant gaps in understanding the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that states the core purpose without unnecessary words. It's appropriately sized for a simple lookup tool and front-loaded with the essential information. Every word earns its place in this concise formulation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and a simple but undocumented return type, the description is incomplete. It doesn't explain what the tool returns (e.g., list of director objects with fields like name, title, tenure) or any behavioral aspects. For a tool that presumably returns structured data about directors, more context about the response format would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with one parameter clearly documented in the schema. The description adds no additional parameter semantics beyond what's in the schema. According to scoring rules, with high schema coverage (>80%), the baseline is 3 even with no param info in the description, which applies here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and resource 'board directors for a specific company', making the purpose immediately understandable. It distinguishes from siblings like get_company_shareholders or get_directors_by_name by specifying it's about board directors for a company. However, it doesn't explicitly differentiate from get_all_companies or get_company_by_symbol beyond the resource focus.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you need board directors for a company, but provides no explicit guidance on when to use this versus alternatives like get_directors_by_name or get_company_shareholders. The input schema suggests using get_company_by_symbol first to get the ID, which offers some implied context, but the description itself lacks clear when/when-not instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_company_shareholdersC

Get shareholders for a specific company

ParametersJSON Schema
NameRequiredDescriptionDefault
companyIdYesCompany ID

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but only states the action without behavioral details. It doesn't disclose if this is a read-only operation, requires authentication, has rate limits, returns paginated results, or what the output format might be, which is inadequate for a tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no wasted words, making it appropriately sized. However, it's not front-loaded with critical details like scope or alternatives, which slightly reduces its effectiveness despite the brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of shareholder data, no annotations, no output schema, and 1 parameter, the description is incomplete. It doesn't explain return values, data scope, or behavioral traits, making it insufficient for an agent to use the tool effectively without guesswork.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds no parameter semantics beyond the input schema, which has 100% coverage and documents the single 'companyId' parameter. Since schema coverage is high, the baseline is 3, and the description doesn't compensate with additional context like ID format or examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get shareholders for a specific company' clearly states the verb ('Get') and resource ('shareholders'), but it's vague about scope (e.g., all shareholders vs. top ones) and doesn't distinguish from siblings like 'get_top_shareholders_by_sector' or 'get_shareholder_overlap'. It avoids tautology but lacks specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites, exclusions, or compare to sibling tools like 'get_top_shareholders_by_sector' for filtered results or 'get_shareholder_overlap' for relational data, leaving usage context implied at best.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_directors_by_nameC

Search for directors by name across all companies

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDirector name or partial match

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the search function but lacks critical details: whether it's case-sensitive, supports fuzzy matching, returns partial matches as implied by the schema, includes pagination or limits, requires authentication, or has rate limits. For a search tool with zero annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose ('Search for directors by name') and adds necessary context ('across all companies'). There is zero wasted language, and every word earns its place by clarifying scope and action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (a search function with no output schema and no annotations), the description is incomplete. It lacks details on return values (e.g., format, fields like director IDs or company affiliations), behavioral traits (e.g., search precision, result limits), and usage context. For a tool with 1 parameter but no structured output or safety annotations, the description should provide more operational context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the 'name' parameter documented as 'Director name or partial match'. The description adds no additional parameter semantics beyond what's in the schema. According to the rules, with high schema coverage (>80%), the baseline is 3 even with no param info in the description, which applies here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('search') and resource ('directors by name'), specifying it searches across all companies. It distinguishes from siblings like 'get_company_directors' (which likely returns directors for a specific company) by emphasizing the cross-company scope. However, it doesn't explicitly differentiate from other search tools like 'analyze_natural_query' or 'execute_custom_query' that might also handle director searches.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a name input), exclusions (e.g., not for filtering by other criteria), or comparisons to siblings like 'get_company_directors' (for company-specific searches) or 'get_board_interlocks' (for relationship analysis). Usage is implied by the name but not explicitly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_esg_scoresC

Get ESG (Environmental, Social, Governance) scores

ParametersJSON Schema
NameRequiredDescriptionDefault
companyIdNoOptional: Company ID to filter by

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It only states the action 'Get' without disclosing behavioral traits such as whether it's a read-only operation, requires authentication, has rate limits, or what the return format looks like. This is a significant gap for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste, front-loaded with the core action. It's appropriately sized for a simple tool, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (a data retrieval tool with no annotations and no output schema), the description is incomplete. It lacks details on return values, error handling, or behavioral context, which are crucial for an AI agent to use it correctly, especially with many sibling tools available.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the single parameter 'companyId' as optional. The description adds no additional meaning beyond what the schema provides, such as explaining what ESG scores include or how filtering works, but baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'ESG (Environmental, Social, Governance) scores', making the purpose specific and understandable. However, it doesn't differentiate from siblings like 'get_all_companies' or 'get_company_by_symbol', which might also retrieve company data, so it doesn't reach the highest score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'get_all_companies' or 'compare_companies' that might relate to ESG data, there's no explicit mention of context, exclusions, or prerequisites, leaving usage unclear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_historical_pricesB

Get historical price data for a company

ParametersJSON Schema
NameRequiredDescriptionDefault
companyIdYesCompany ID
daysNoNumber of days of historical data

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'Get[s] historical price data', implying a read-only operation, but doesn't specify data format (e.g., time series), access permissions, rate limits, or error conditions. For a tool with no annotation coverage, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste: 'Get historical price data for a company'. It is appropriately sized and front-loaded, directly stating the core purpose without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and 2 parameters with full schema coverage, the description is minimally adequate. It covers the basic purpose but lacks behavioral details (e.g., data format, errors) and usage context. For a simple read tool, it meets the minimum viable threshold but has clear gaps in completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear parameter descriptions in the schema (e.g., 'Company ID', 'Number of days of historical data'). The description adds no additional parameter semantics beyond what the schema provides, such as format examples or constraints. Baseline 3 is appropriate since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as 'Get historical price data for a company', specifying the verb 'Get' and resource 'historical price data' with the target 'company'. It distinguishes from siblings like 'get_company_by_symbol' or 'get_all_companies' by focusing on price data, but doesn't explicitly differentiate from tools like 'analyze_trends' or 'compare_companies' that might involve price data indirectly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a company ID), exclusions (e.g., not for real-time data), or comparisons to siblings like 'get_company_by_symbol' for company details or 'analyze_trends' for analysis. Usage is implied only by the purpose statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_lobbying_meetingsC

Get EU lobbying meetings, optionally filtered by company

ParametersJSON Schema
NameRequiredDescriptionDefault
companyIdNoOptional: Company ID to filter by
limitNoMaximum number of meetings

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states what the tool does but lacks behavioral details: it doesn't mention if this is a read-only operation, potential rate limits, authentication needs, pagination (beyond the 'limit' param), or what the return format looks like (e.g., list of meetings with fields). For a tool with no annotations, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose ('Get EU lobbying meetings') and adds optional filtering. There's zero waste, and every word earns its place, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and a simple input schema, the description is incomplete. It doesn't explain what 'EU lobbying meetings' entails (e.g., data fields, source), behavioral aspects like safety or performance, or return values. For a tool in a server with many financial/lobbying siblings, more context is needed to guide effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters ('companyId' and 'limit') with descriptions. The description adds minimal value beyond the schema by implying filtering by company but doesn't provide additional context like example IDs or usage scenarios. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and resource ('EU lobbying meetings') with optional filtering by company. It's specific about what it retrieves but doesn't distinguish from potential siblings like 'get_most_active_lobbyists' or 'get_all_companies' that might overlap in domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. It mentions optional filtering by company but doesn't specify scenarios (e.g., vs. 'get_all_companies' for broader data or 'get_most_active_lobbyists' for different lobbying insights). The description lacks explicit when/when-not instructions or named alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_most_active_lobbyistsC

Get organizations with the most EU lobbying meetings

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves data ('Get'), implying a read-only operation, but does not clarify aspects like whether it requires authentication, has rate limits, returns paginated results, or what the output format entails (e.g., list of organizations with counts). For a tool with no annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence: 'Get organizations with the most EU lobbying meetings.' It is front-loaded with the core purpose, has no unnecessary words, and efficiently communicates the tool's function without redundancy. This makes it easy for an agent to parse and understand quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a ranking tool (implied by 'most active'), no annotations, and no output schema, the description is incomplete. It does not explain how 'most active' is determined (e.g., based on meeting frequency or other metrics), what data is returned (e.g., organization names and counts), or any behavioral constraints. For a tool that likely involves sorting and limiting results, more context is needed to guide effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the 'limit' parameter well-documented as 'Maximum number of results' with a default of 10. The description does not add any semantic details beyond this, such as explaining how 'most active' is calculated (e.g., by meeting count) or if other filters apply. Given the high schema coverage, a baseline score of 3 is appropriate, as the description does not compensate but also does not detract.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get organizations with the most EU lobbying meetings.' It specifies the verb ('Get'), resource ('organizations'), and scope ('EU lobbying meetings'), making the function unambiguous. However, it does not explicitly differentiate from sibling tools like 'get_lobbying_meetings' or 'get_all_companies,' which could provide similar or overlapping data, preventing a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention when this tool is preferred over siblings like 'get_lobbying_meetings' (which might list meetings directly) or 'get_all_companies' (which could include lobbying data), nor does it specify prerequisites or exclusions. This lack of contextual direction leaves the agent to infer usage based on the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_network_analysisB

Get comprehensive network analysis of board interlocks and shareholder relationships

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves analysis but doesn't specify if it's read-only, requires authentication, has rate limits, or describes the return format. This leaves significant gaps for a tool that likely involves complex data retrieval.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without any fluff or redundancy. It is front-loaded and every word contributes to understanding the tool's function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity implied by 'comprehensive network analysis' and the lack of annotations and output schema, the description is insufficient. It doesn't explain what 'comprehensive' entails, the scope of analysis, or the expected output format, making it incomplete for effective agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so no parameter information is needed. The description doesn't mention parameters, which is appropriate, earning a baseline score of 4 for not adding unnecessary details beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and the resource ('comprehensive network analysis of board interlocks and shareholder relationships'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_board_interlocks' or 'get_shareholder_overlap', which appear related, so it doesn't reach the highest score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, such as the sibling tools 'get_board_interlocks' or 'get_shareholder_overlap'. It lacks any context, prerequisites, or exclusions, leaving the agent to infer usage based on the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_news_by_sentimentC

Get news articles filtered by sentiment

ParametersJSON Schema
NameRequiredDescriptionDefault
sentimentYesNews sentiment
limitNoMaximum number of articles

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but provides minimal behavioral context. It mentions filtering but doesn't disclose source limitations, rate limits, authentication needs, pagination behavior, or what 'Get' entails (e.g., returns metadata vs. full articles). For a tool with no annotations, this is inadequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste. It's front-loaded with the core purpose and appropriately sized for a simple filtering tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and a simple tool with 2 parameters, the description is incomplete. It lacks behavioral details (e.g., what 'Get' returns, limitations), usage context, and doesn't compensate for the absence of structured fields. It's minimally viable but leaves significant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents both parameters. The description adds no additional meaning beyond implying sentiment filtering, which is already clear from the parameter names and schema. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('news articles'), plus the filtering criterion ('by sentiment'). It distinguishes from siblings like 'get_recent_news' by specifying sentiment-based filtering. However, it doesn't explicitly differentiate from all potential news-related tools beyond the provided list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. While 'get_recent_news' is a sibling, the description doesn't mention it or explain when sentiment filtering is preferable. There's no context about prerequisites, timing, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_recent_newsB

Get recent news articles, optionally filtered by company

ParametersJSON Schema
NameRequiredDescriptionDefault
companyIdNoOptional: Company ID to filter by
limitNoMaximum number of articles

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves news articles but lacks details on permissions, rate limits, data freshness, or response format. For a read operation with zero annotation coverage, this leaves significant behavioral gaps unaddressed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose ('Get recent news articles') and adds a clarifying detail ('optionally filtered by company'). There is no wasted verbiage, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (2 parameters, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose but lacks guidance on usage, behavioral traits, and output details. With no output schema, it should ideally hint at return values, but the simplicity of the tool keeps it at a baseline 3.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents both parameters. The description adds marginal value by mentioning optional filtering by company, which aligns with the 'companyId' parameter, but doesn't provide additional syntax or format details beyond what the schema already specifies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get') and resource ('recent news articles'), and specifies optional filtering by company. It distinguishes from siblings like 'get_news_by_sentiment' by focusing on recency rather than sentiment analysis. However, it doesn't explicitly contrast with all news-related siblings, keeping it at a 4.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'get_news_by_sentiment' or other news-related tools. It mentions optional filtering but doesn't explain scenarios where filtering is beneficial or when other tools might be more appropriate, leaving the agent with minimal usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sector_correlation_analysisC

Analyze sector performance correlations and market trends

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to analyze

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden for behavioral disclosure. It mentions analysis but doesn't specify whether this is a read-only operation, if it requires authentication, rate limits, or what the output entails (e.g., data format, potential side effects). The description is too vague to inform the agent about key behavioral traits beyond the basic action implied by 'analyze'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with a single sentence 'Analyze sector performance correlations and market trends', which is front-loaded and wastes no words. However, it could be more structured by including key details like output format or usage context, but as-is, it's efficiently phrased without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity implied by 'analysis' and lack of annotations or output schema, the description is incomplete. It doesn't explain what the analysis returns (e.g., correlation coefficients, trends data), how results are formatted, or any behavioral aspects. For a tool with no structured data to supplement it, the description should provide more context to be fully actionable for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for its single parameter 'days', with a clear description and default value. The tool description adds no additional parameter semantics beyond what the schema provides, such as explaining how 'days' affects the analysis or any constraints. With high schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate but also doesn't detract.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Analyze sector performance correlations and market trends' states a general purpose but lacks specificity. It mentions 'sector performance correlations' and 'market trends' but doesn't clarify what analysis is performed (e.g., statistical correlation metrics, visualizations, or summary insights). It doesn't distinguish from siblings like 'analyze_trends' or 'get_network_analysis', which could overlap in analyzing trends or relationships.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. With siblings such as 'analyze_trends' and 'get_network_analysis', the description doesn't indicate specific contexts, prerequisites, or exclusions for selecting this tool over others. Usage is implied only by the tool name and vague description, leaving the agent to guess based on incomplete information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_shareholder_overlapB

Find shareholders who own stakes in multiple IBEX 35 companies

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'finds' shareholders, implying a read-only operation, but doesn't specify whether it requires authentication, has rate limits, returns structured data, or handles errors. For a tool with zero annotation coverage, this is a significant gap in behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose without any wasted words. It's appropriately sized for a tool with no parameters, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters, no output schema, and no annotations, the description is minimally adequate. It explains what the tool does but lacks details on behavioral traits, return values, or usage context. This leaves gaps in completeness, especially since it's a read operation that might benefit from output format clarification.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the inputs. The description doesn't need to add parameter details, and it appropriately avoids redundancy. A baseline of 4 is applied since no parameters are present, and the description doesn't introduce confusion.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Find shareholders who own stakes in multiple IBEX 35 companies.' It specifies the verb ('find'), resource ('shareholders'), and scope ('multiple IBEX 35 companies'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'get_company_shareholders' or 'get_top_shareholders_by_sector,' which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context, or exclusions, nor does it compare with similar tools like 'get_company_shareholders' or 'get_top_shareholders_by_sector.' This lack of usage instructions leaves the agent to infer when this tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_top_performersC

Get top performing stocks over a specified period

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoPeriod in days
limitNoMaximum number of results

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states the tool retrieves data but does not disclose behavioral traits such as whether it requires authentication, has rate limits, returns real-time or historical data, or how 'top performing' is defined (e.g., by return percentage, volume). This leaves significant gaps for an agent to understand operational constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. Every part earns its place by specifying the action, resource, and key constraint, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete. It does not explain what 'top performing' entails, the return format, or any behavioral aspects like data freshness or error handling. For a tool with two parameters and no structured safety hints, more context is needed to guide effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear parameter descriptions for 'days' and 'limit'. The description adds minimal value beyond the schema by implying a 'specified period' but does not elaborate on parameter interactions or semantics like what 'top performing' means in relation to these inputs. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'top performing stocks', specifying the action and target. It distinguishes itself from siblings like 'get_historical_prices' or 'get_all_companies' by focusing on performance ranking. However, it lacks explicit differentiation from tools like 'screen_opportunities' which might also identify high-performing assets, making it a 4 rather than a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention when-not scenarios or compare to siblings like 'analyze_trends' or 'screen_opportunities' that might serve similar purposes. Without any usage context, the agent must infer based on tool names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_top_shareholders_by_sectorC

Get top shareholders in a specific sector

ParametersJSON Schema
NameRequiredDescriptionDefault
sectorYesSector name
limitNoMaximum number of results

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states a read operation ('Get'), but doesn't mention any behavioral traits such as data freshness, rate limits, authentication needs, or what 'top' means (e.g., by market cap, ownership percentage). This leaves significant gaps for a tool that likely queries financial data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded and wastes no space, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of financial data queries, no annotations, and no output schema, the description is insufficient. It doesn't explain what 'top' entails, the data source, return format, or error handling. For a tool with two parameters and likely nuanced output, more context is needed to ensure reliable agent usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with clear documentation for 'sector' and 'limit' parameters. The description doesn't add any semantic details beyond the schema, such as examples of sector names or context for the limit. Given the high schema coverage, a baseline score of 3 is appropriate as the schema handles the parameter documentation adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and target resource ('top shareholders in a specific sector'), making the purpose immediately understandable. However, it doesn't distinguish this tool from sibling tools like 'get_company_shareholders' or 'get_shareholder_overlap', which might have overlapping functionality, so it doesn't reach the highest score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'get_company_shareholders' and 'get_shareholder_overlap' that might retrieve similar data, there's no indication of context, prerequisites, or exclusions to help an agent choose appropriately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_weekly_reportsB

Get generated weekly reports and analysis

ParametersJSON Schema
NameRequiredDescriptionDefault
reportTypeNoType of report to filter by
limitNoMaximum number of reports

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'generated weekly reports and analysis' but doesn't specify whether this is a read-only operation, what permissions are needed, how data is returned (e.g., format, pagination), or any rate limits. For a tool with no annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it easy to parse quickly. Every word contributes directly to the purpose without redundancy or unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (2 parameters, no output schema, no annotations), the description is minimally adequate. It states what the tool does but lacks details on behavior, usage context, or output format. Without annotations or an output schema, more completeness would be beneficial, but it meets a basic threshold for a simple retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, clearly documenting both parameters with enums and defaults. The description adds no additional meaning beyond the schema, such as explaining what 'weekly' entails or how 'analysis' is structured. With high schema coverage, a baseline score of 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get') and resource ('weekly reports and analysis'), making the purpose understandable. However, it doesn't differentiate this tool from similar siblings like 'generate_analyst_report' or 'get_historical_prices' that might also provide reports or data, leaving some ambiguity about its specific scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. With many sibling tools like 'generate_analyst_report' and 'get_historical_prices' that could overlap in providing reports or analyses, the description offers no context on prerequisites, typical use cases, or exclusions, leaving the agent to guess based on the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screen_opportunitiesC

Screen for investment opportunities based on specific criteria (value, growth, dividend, ESG, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault
screening_criteriaYes
limitNoMaximum number of opportunities to return

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden for behavioral disclosure. It states the tool 'screens' but doesn't clarify if this is a read-only operation, whether it requires authentication, rate limits, or what the output format looks like (e.g., list of opportunities with details). For a screening tool with no annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose. It includes examples (value, growth, etc.) that add context without unnecessary elaboration. However, it could be slightly more structured by explicitly mentioning the input criteria object.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (2 parameters with nested objects), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what constitutes an 'investment opportunity' in the output, how results are ordered, or behavioral aspects like performance implications. This leaves significant gaps for an agent to use the tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%, with detailed descriptions for some parameters (e.g., 'pe_ratio_max', 'governance_quality') but others like 'sectors' and 'exclude_sectors' lack item-level descriptions. The description adds minimal value beyond the schema by listing criteria types (value, growth, etc.), which loosely maps to parameters but doesn't provide syntax or format details. Baseline 3 is appropriate given partial schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Screen for investment opportunities based on specific criteria' with examples like value, growth, dividend, ESG. It specifies the verb ('screen') and resource ('investment opportunities'), but doesn't explicitly differentiate from sibling tools like 'get_companies_by_sector' or 'get_companies_with_pe_ratio' that might overlap in functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It mentions criteria types (value, growth, etc.) but doesn't specify contexts, prerequisites, or exclusions compared to sibling tools like 'get_all_companies' or 'execute_custom_query'. This leaves the agent without clear direction for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3/5.0
Disambiguation3/5

The tools have clear individual purposes, but there is significant functional overlap that could cause confusion. For example, 'analyze_trends', 'get_sector_correlation_analysis', and 'get_weekly_reports' all involve trend analysis, while 'get_all_companies', 'get_companies_by_sector', and 'get_companies_with_pe_ratio' are variations of company filtering. Descriptions help differentiate, but the boundaries are not always distinct.

Naming Consistency4/5

Most tools follow a consistent verb_noun pattern (e.g., 'get_company_directors', 'analyze_trends'), with clear action-oriented prefixes like 'get_', 'analyze_', or 'assess_'. However, there are minor deviations such as 'execute_custom_query' (which uses 'execute' instead of 'get') and 'screen_opportunities' (which uses 'screen' as a verb), slightly breaking the pattern but remaining readable.

Tool Count2/5

With 27 tools, the set feels overly heavy and potentially redundant for the IBEX 35 financial analysis domain. Many tools could be consolidated (e.g., multiple 'get_' queries for companies), leading to a bloated interface that may overwhelm agents and increase misselection risk, despite the broad scope.

Completeness5/5

The tool surface is highly complete for financial and governance analysis of IBEX 35 companies. It covers data retrieval (e.g., company info, prices, news), analysis (e.g., trends, risk, reports), and screening (e.g., opportunities), with no obvious gaps. Agents can perform comprehensive workflows from basic queries to advanced analytics without dead ends.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Real-time financial narrative tracking for AI agents — clustering news into structured narratives, measuring sentiment momentum, and mapping portfolio risk across 109 US equities.
    2
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables querying Mexican stock market data (BMV, BIVA) including issuers, intraday quotes, historical prices, financials, indices, rates, currencies, commodities, and news through natural language.
    2
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables financial analysis by fetching real market data from Yahoo Finance, computing moving averages, returns, and volatility, and generating price charts.
  • A
    license
    A
    quality
    A
    maintenance
    Stock screening, company financials, ETF search, and personal portfolio analysis over a remote OAuth-protected MCP server https://mcp.bull-run.org/mcp
    14
    MIT

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