Stay Calm and Prompt On (SCAPO) - MCP server for AI/ML best practices. Provides queryable knowledge base for model recommendations, best practices, parameters, and pitfalls.
SCAPO MCP server has 4 tools with explicit schemas and descriptions visible in mcp/index.js. Naming follows verb_noun pattern (get_*, search_*, list_) and is reasonably clear. All tools have input schemas with type definitions and descriptions. However, there are significant gaps: (1) Output schemas are NOT documented, LLMs cannot see what fields are returned; (2) Parameter descriptions lack constraint details (ranges, valid formats, examples of what 'use_case' values are acceptable); (3) No error handling guidance, tools silently catch errors and return 'Error: <message>' without recovery hints; (4) No pagination support documented for list_models or search_models, which could return large result sets; (5) The descriptions are brief (mostly 50-80 chars) but lack WHEN to use each tool vs. alternatives. The code shows fuzzy matching fallback and local models support, but this functionality is not exposed in descriptions. Tool composition is reasonable, tools are single-purpose and could chain (search_models → get_best_practices). Parameter defaults are sensible (practice_type='all', limit=10, category='all'). Overall: definitions are present and structured, but lack the depth (output schemas, error guidance, constraint details) expected of production-grade agent tools.
Get AI/ML best practices for a specific model
Get recommended models for a specific use case
List all available models by category
Search for models by keyword
Output schemas not documented. LLMs cannot infer what fields are returned by any tool. For example, search_models might return model_name, category, description, but this is invisible to the client.
No error handling guidance. All tools catch errors and return generic 'Error: <message>' text. LLMs receive no hint whether to retry, ask the user, or call a different tool. Pattern requires categorization (retryable, user-fixable, fatal) and actionable recovery steps.
Parameter descriptions lack constraint details. 'query' has no hint on length, format, or what fields it searches. 'use_case' lists no examples and provides no enum to prevent hallucinated values like 'neural_network_research' or 'blockchain_analysis'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 57 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
No pagination or limit guidance for list_models. If the category is 'all', the tool may return hundreds of models. The description does not state a cap, and there's no next_cursor or total_count for result navigation.
Descriptions lack 'WHEN to use' context. 'search_models' and 'list_models' both retrieve models but the descriptions don't explain: search is for keyword queries, list is for browsing by category. LLMs may select the wrong one.
No indication that tools integrate with an API backend (SCAPO_API_URL env var) or fall back to local models. This hidden behavior is not documented, so LLMs cannot reason about availability or fallback semantics.