Model Context Protocol server for OpenRouter API access, providing chat completion and conversation management capabilities
This server has significant definition quality gaps across multiple dimensions. While tool naming is generally clear (verb_noun convention), descriptions vary widely in quality and depth. Most critically, input schemas are incompletely documented in the source code provided, and several tools lack proper parameter type definitions. The server implements 14 tools with moderately descriptive names, but parameter documentation is sparse and inconsistent. Error handling guidance is absent from most tool descriptions. Security concerns exist around API key exposure and file path handling. The composition is reasonable (mostly single-responsibility tools), but many lack the LLM-optimized guidance needed for reliable agent selection and execution.
Add a message to a conversation history with role, content, and optional metadata
Build the OpenRouter MCP Docker image from the Dockerfile
Check Docker container and image status for the OpenRouter MCP server
Create a new conversation session and return a unique continuation ID for managing conversation history
Execute a chat completion request with OpenRouter API, supporting multiple models, conversation continuation, file/image attachments, web search, and advanced reasoning modes
Retrieve conversation history in OpenAI format with optional token optimization
Incomplete input schemas across 10+ tools. Many tools lack visible parameter type definitions, constraints, or enums in source code. For example, 'create_conversation' shows no input schema at all (empty object), and 'check_status' has no visible schema documentation.
Insufficient parameter descriptions. Most parameters lack details about acceptable ranges, formats, constraints, or dependencies. For example, 'temperature' parameter accepts 0-2 but no guidance on what happens at extremes. 'max_tokens' lacks minimum/maximum bounds.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 43 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 25 | - | v1 |
Get the actual OpenRouter model name from an alias or intelligent LLM-based selection based on user prompt context
Get the current server configuration including API settings, defaults, and transport limits
List all available model aliases and their mappings to actual OpenRouter model IDs
Load the history and messages from an existing conversation by its continuation ID
Rebuild the Docker image and restart the container with clean state
Start the OpenRouter MCP Docker container using docker-compose
Stop and remove all OpenRouter MCP related Docker containers and cleanup volumes
Suggest available model aliases based on partial input matching
Missing error recovery guidance in all tool descriptions. No description tells LLM what to do if a tool call fails. For example, 'load_conversation' provides no guidance on invalid UUID format, what happens with non-existent continuation IDs, or alternative actions. No error classification (retryable vs fatal).
No documented output schemas. The source code shows no declared return type documentation for any tool. LLMs cannot plan downstream calls or validate responses when output structure is undocumented. No pagination, total count, or next_cursor fields documented for list operations.
Docker/container management tools (start_container, stop_container, build_image, rebuild_and_restart) lack critical implementation details. Descriptions do not clarify prerequisites (Docker must be installed?), expected duration, rollback behavior on failure, or what happens to data during stop/rebuild operations.
Security: file path parameters ('files', 'images' arrays in execute_chat_completion, and implicitly file handling in Docker tools) are not validated. No description warns against path traversal, symlink attacks, or large file handling. OPENROUTER_API_KEY loaded from environment into config but never hidden from tool output, could leak into LLM context.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish read-only tools (list_*, get_*) from destructive ones (rebuild_and_restart, stop_container, delete). This increases risk of accidental data loss when agents retry operations.
Conversation management tools lack clarity on data durability and persistence. 'create_conversation' returns a continuation_id but no description clarifies where it's stored (in-memory, ephemeral, durable DB?), how long it persists, or what happens if the server restarts.
Model alias resolution logic undocumented. 'get_model_alias' and 'suggest_model_alias' tools exist but descriptions do not explain the exact matching algorithm, fallback behavior, or what 'intelligent LLM-based selection' means. LLM cannot reliably use these without knowing exact rules.
No validation of tool behavior across restart cycles. Docker restart tools (rebuild_and_restart, stop_container, start_container) do not document idempotency guarantees. Can an LLM safely retry a failed rebuild? What is the canonical state after restart?