MCP Server to find the best AI model for your task. Searches 300+ OpenRouter models by semantic match and constraints.
Three tools with clear semantic purpose and actionable descriptions, but inconsistent schema completeness and missing output documentation. All tools have descriptions (10 - 20 chars minimum exceeded), but the task2model tool lacks explicit output schema documentation despite having complex nested input. Parameter descriptions are present but sometimes generic. Error handling returns structured errors but lacks recovery guidance for LLMs.
Get detailed profile of a specific model, optionally including endpoints and parameters.
Refresh the OpenRouter models catalog cache. Use force=true to bypass TTL.
Recommend models for a task. Returns top 100 model IDs filtered by age (<1 year) and ranked by semantic match. IMPORTANT: Use default parameters (just provide "task"). Only add constraints if user explicitly requests them. Defaults: limit=100, detail=names_only, max_age_days=365 Optional: hard_constraints.max_price_per_1m, hard_constraints.required_parameters, result.detail (minimal|standard|full)
Missing output schema documentation for all three tools. LLMs cannot infer what fields to extract from responses.
task2model input schema lacks clarity on enum meanings: 'routing' enum values (price, throughput, latency) and 'detail' enum values (names_only, minimal, standard, full) are undocumented. LLMs will guess what each means.
task2model does not document pagination. Description claims 'Returns top 100 model IDs' but no limit parameter is visible in the input schema (limit is nested in result object with default=100). No next_cursor or offset documented for handling >100 results.
Error responses (e.g., 'INVALID_INPUT', 'Model not found') are structured but lack recovery guidance. When get_model_profile returns 'Model not found: X', the description should suggest 'Try sync_catalog() to refresh the catalog' or 'Call search_models() with a partial name'.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 62 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 0 | - | v1 |
task2model description embeds implementation guidance ('IMPORTANT: Use default parameters') in the tool description. This should be in docs or UI tooltips, not in the tool schema itself, it bloats the description and is not actionable for the LLM.
All three tools return plain JSON text wrapped in {'content': [{'type': 'text', 'text': '...'}]}. This is valid MCP format but does not leverage structured output patterns. Consider returning typed objects with tool annotations (readOnlyHint) to clarify intent.