MCP server for searching American Economic Association (AEA) journals including American Economic Review and AEJ publications
Single tool 'aea_search' has reasonable naming and detailed description, but schema representation is problematic. The input schema is visible in the rubric data as a dict with type declarations, but parameter descriptions are embedded in the docstring rather than formally in the schema structure. Output schema is completely undocumented, the function returns dict but no structure is specified. No error handling guidance, no parameter validation rules, no enum constraints despite clear valid values (journal_list has known options). The tool accepts a list parameter without type constraints or validation. Critical gaps in schema formality and error guidance lower the score significantly.
Search from ARA Journal. Args: q (str): The question for search, the language of search should be English. journal_list (list): The journal list which search from, The default is ['aer'] max_search (int): The max search results of returns. Limits the total number of results across all journals and higher speed of run. Returns: The search result with dict type. Notes: Total optional of journal is listed in ['aer', 'aeri', 'app', 'pol', 'mac', 'mic'] The journal short name stands the follow dictionary: { "American Economic Review": "aer", "AER: Insight": "aeri", "AEJ: Applied Economics": "app", "AEJ: Economic Policy": "pol", "AEJ: Macroeconomics": "mac", "AEJ: Microeconomics": "mic", } Examples: >>> aea_search("monetary policy") >>> aea_search("labor market", journal_list=["aer", "mac", "app"]) >>> aea_search("skill and age", journal_list=["aer", "aeri"], max_search=30)
Output schema undocumented. Function returns dict but no structure is specified. LLMs cannot plan downstream operations or extract fields reliably.
journal_list parameter accepts a list but has no enum constraint despite clear valid values ['aer', 'aeri', 'app', 'pol', 'mac', 'mic']. LLMs will hallucinate invalid journal codes.
No error handling guidance. Function can fail silently (if journal not found, returns empty results). No recovery hints for LLM.
max_search parameter lacks validation rules. No bounds specified (min/max). LLM could pass 0, negative numbers, or absurdly large values.
Tool description embeds example code (>>>aea_search(...)) in docstring. LLMs tend to reuse example values literally rather than adapt to context.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 47 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 52 | - | v1 |
Parameter schema format is non-standard. Type definitions exist but are not in formal JSON Schema structure compatible with strict MCP schema validation.