Academic author search engine that aggregates data from multiple sources (Semantic Scholar, OpenAlex, Crossref, arXiv, PubMed) to retrieve co-authors and research keywords for academic authors
AuthorProfileMCP has two tools with basic structure but significant quality gaps. Tool names follow the verb_noun convention (get_coauthors, get_author_keywords), which is good. However, parameter descriptions are minimal or missing, output schemas are not documented, and error handling is generic. The server catches exceptions but returns unstructured error responses that don't guide recovery. Parameter validation is absent, inputs accept any string with no format constraints, ranges, or enums. Descriptions are adequate (100+ chars each) but lack dependency hints or selection context. Tool responses return dictionaries with 'success' flags and raw error strings rather than actionable recovery guidance. The implementation shows awareness of async patterns and basic HTTP transport setup, but lacks production-grade tool quality standards.
Get research keywords/areas for a given author from Google Scholar.
Get all co-authors for a given author.
Output schemas are not documented. Tools return dictionaries with 'success', 'coauthors'/'keywords', 'total_coauthors'/'total_keywords', and 'error' fields, but the MCP tool definitions nowhere declare the structure. LLMs cannot plan downstream operations or extract fields reliably.
Error handling is generic and non-actionable. Both tools return {'success': False, 'error': str(e)} on failure. Exception messages are raw strings like 'Connection timeout' or 'Invalid scholar profile', LLMs cannot infer what to do next (retry? call a different tool? ask user for clarification?).
No input validation or constraints. Parameters name, surname, institution, and field are documented as strings with no type annotations, length limits, regex patterns, or enums. An LLM could pass 'xyz@@@' as a name or an empty string, causing silent failures downstream.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 60 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 37 | - | v1 |
Parameter descriptions are incomplete. 'institution' is documented as 'Optional institution affiliation' but lacks guidance on format (university name vs. ROR ID?) or region. 'field' is documented as 'Optional research field' with no clarification on whether it's a free-form string, a controlled vocabulary, or examples of valid values.
No pagination support. Tools return all coauthors/keywords in a single response without limit, offset, or next_cursor. If an author has 500 coauthors, the response could blow the context window. No indication in descriptions that results are capped or paginated.
Tool descriptions lack dependency hints or selection context. Neither description explains when to call get_coauthors vs. get_author_keywords, or whether one must be called before the other. An LLM might call both unnecessarily or misunderstand their relationship.