An MCP server exposing investment-data tools over a synthetic firmographic dataset (~10,000 companies). Provides tools to search companies, retrieve company details, financial-intent signals, and recent funding information.
Four tools with complete schemas and descriptions. Naming follows verb_noun pattern (search_, get_, list_). Descriptions are adequate (100-200 chars) but lack actionable error guidance. Parameters are typed and mostly described, but lack enums for constrained inputs (e.g., 'hq' accepts region keywords but no enum). Output schemas are implicit (not formally documented). Error handling returns generic error dicts without recovery guidance. No tool annotations (readOnlyHint, etc.). Composition is sound, tools are single-purpose and chainable.
Full record for one company by exact name (case-insensitive).
Financial-intent signals for one company: intent_score (0–100), hiring_velocity_90d, web_traffic_trend, news_mentions_30d.
List companies with recent funding, newest first. Optional filters: `sector` (substring), `since` (ISO date, e.g. '2025-01-01'), and `hq` (a region keyword like 'MENA'/'Gulf'/'Europe', or a country substring like 'UAE'). Returns up to `limit` rows.
Search companies by name, sector, or HQ (case-insensitive substring). Optional `hq` narrows by location and accepts a region keyword ('MENA', 'Gulf'/'GCC', 'Europe') or a country substring ('UAE'). Returns up to `limit` compact summaries (id, name, sector, hq).
Constrained inputs lack enums. 'hq' parameter accepts region keywords ('MENA', 'Gulf', 'Europe') and country substrings but is defined as free-form string. LLMs will hallucinate invalid values. Should declare enum: ['MENA', 'Gulf', 'GCC', 'Europe', 'UAE', 'Saudi Arabia', ...] or use pattern constraint.
Error responses are generic dicts without recovery guidance. get_company and get_signals return {'error': 'No company named X'} but do not suggest next steps (e.g., 'Try search_companies() with a partial name'). Agents cannot self-correct.
Output schemas are not formally documented. Tool descriptions state what fields are returned (e.g., 'id, name, sector, hq' for search_companies) but no JSON Schema output type is declared. LLMs cannot reliably extract fields for downstream chaining.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
No tool annotations. Tools are read-only but lack readOnlyHint annotation. This prevents clients from optimizing caching, retry logic, or permission checks. All four tools should declare readOnlyHint: true.
Parameter 'since' in list_recent_funding accepts ISO date strings but description does not specify format or validation. Should state: 'ISO 8601 date (YYYY-MM-DD), e.g. 2025-01-01. Dates before this are excluded.'