CEO performance for 500+ US public companies: how the stock did over each CEO's tenure, what the S&P 500 did over that same window, how long they have been in the job, and what they were paid. Sectors and industries are S&P's own GICS classification. Reported figures only -- no ratings or scores, and no investment recommendations.
CEORater MCP has well-structured tool definitions with clear, domain-specific descriptions (avg ~180 chars). All 6 tools have explicit input schemas with typed parameters and descriptions. Naming follows verb_noun convention (ceo_lookup, ceo_list, ceo_search, ceo_sectors, ceo_industries, ceo_meta). However, output schemas are not formally documented in the code, descriptions mention field lists but no structured schema is visible. Error handling is present but generic (404, 429, 503 responses return strings without recovery guidance). No parameter validation constraints (enums, ranges) are declared in schemas. All tools are READ_ONLY, reducing composition complexity.
The GICS sub-industries in use, with a company count and parent sector.
List CEOs, optionally filtered. With no arguments, returns all of them. Filters are exact and case-insensitive, and combine. Use ceo_sectors or ceo_industries first to see the valid values rather than guessing a spelling. Fields: ticker, company, ceo, founder, sector, industry, tenure_years, total_return_pct, spy_return_pct, compensation_musd. Returns are already percentages, so total_return_pct 545800 means +545,800%. Compensation is in millions of USD.
Look up the CEO of a company by ticker. Returns an array: a ticker can hold more than one record, because Oracle, KKR, Globe Life, Lululemon and Netflix run co-CEOs and each executive has their own start date and their own return. Fields: ticker, company, ceo, founder, sector, industry, tenure_years, total_return_pct, spy_return_pct, compensation_musd. Returns are already percentages, so total_return_pct 545800 means +545,800%. Compensation is in millions of USD.
Dataset size, field list, and how recently the data was refreshed.
Search CEOs by company name, ticker, CEO name, sector or industry. This is a loose substring match across all five, so "Technology" also returns Align Technology and every Biotechnology company. For an exact sector or industry, use ceo_list with the sector or industry argument. Fields: ticker, company, ceo, founder, sector, industry, tenure_years, total_return_pct, spy_return_pct, compensation_musd. Returns are already percentages, so total_return_pct 545800 means +545,800%. Compensation is in millions of USD.
Output schemas not formally documented. Descriptions mention field lists (ticker, company, ceo, etc.) but no structured JSON Schema is visible for return types. LLMs cannot reliably parse or chain results without explicit output schemas.
No input parameter constraints (enums, ranges, patterns). ceo_list sector/industry params accept free-form strings; descriptions say 'exact' but no enum is declared. LLMs may hallucinate invalid sector names.
Error responses are generic strings without recovery guidance. '404: Not found' and '429: Rate limited' do not tell the LLM what to do next (retry, search differently, etc.).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
The 11 GICS sectors CEORater uses, with a company count for each. These are S&P's own sector names, matched to each company on SEC CIK rather than ticker. Use one of these values verbatim as ceo_list's sector argument.
ceo_list and ceo_search lack explicit pagination guidance in descriptions. No mention of result limits, offset behavior, or when to use limit/offset. Agents may not know how to handle large result sets.
ceo_meta description is vague ('Dataset size, field list, and how recently the data was refreshed'). Does not explain what fields are returned or when to call it. Should guide discovery workflow.