Self-hosted LLM gateway and tier-routing proxy for Claude Code, Cursor, and AI coding tools. Routes across Ollama, AWS Bedrock, OpenRouter, Databricks, Azure OpenAI, llama.cpp, and LM Studio with prompt caching, MCP tools, and cost savings.
Lynkr demonstrates solid definition quality with consistent naming conventions, comprehensive parameter schemas, and good descriptions. All 11 tools follow verb_noun naming patterns and most have detailed descriptions. However, several critical gaps exist: output schemas are undocumented (no return type specifications visible), error handling guidance is minimal, and some tools lack actionable constraints. The server shows production intent but falls short of A-grade quality due to missing output documentation and incomplete guidance patterns.
Executes a bash command in a persistent shell session. Use for terminal operations like git, npm, docker, listing files (ls), etc. PREFERRED for listing directory contents - use 'ls' command. DO NOT use for reading file contents - use Read tool instead.
Performs exact string replacements in files. You must use your Read tool at least once before editing. The edit will FAIL if old_string is not unique in the file.
File pattern matching for finding files by name pattern. Use ONLY when you need to find files matching a specific pattern like '**/*.js'. For simple directory listing, use Bash with 'ls' instead.
A powerful search tool built on ripgrep. Supports full regex syntax. Filter files with glob parameter or type parameter.
Lists files and directories in a given path. Returns a structured listing with file types and sizes. Use for quick directory overview.
Makes multiple edits to a single file in one atomic operation. More efficient than calling Edit multiple times. Each edit is an exact string replacement.
No output schemas documented for any tool. LLMs cannot determine what fields to expect in responses, forcing them to guess structure and plan downstream calls incorrectly.
Error handling lacks recovery guidance. Tools like Bash, Edit, and Grep do not specify what errors are retryable, what indicates user mistakes, or what the LLM should do next (e.g., 'Edit will FAIL if old_string is not unique in the file' but does not explain how to recover).
Bash and Grep parameters lack input validation constraints. Bash 'command' has no length limit or injection protection documented. Grep 'pattern' accepts arbitrary regex but does not warn about catastrophic backtracking or malformed patterns.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 76 | <=2025-11-25 | v2 |
| 2026-03-09 | B | 71 | - | v1 |
Reads and displays the contents of a Jupyter notebook (.ipynb file), including all cells with their outputs, combining code, text, and visualizations.
Reads a file from the local filesystem. You can access any file directly by using this tool. For files outside the workspace, the user must approve access first.
Launch a specialized agent to handle complex, multi-step tasks autonomously. Use when the user asks to 'explore', 'dig into', 'understand', or 'analyze' a codebase (use subagent_type='Explore'), 'plan', 'design', or 'architect' something (use subagent_type='Plan'), or perform complex multi-file research (use subagent_type='general-purpose'). Available agents: Explore (fast codebase exploration using Glob, Grep, Read), Plan (implementation planning and architecture design), general-purpose (complex multi-step tasks with all tools available).
Create and manage a structured task list for tracking progress and organizing complex tasks. Use proactively for multi-step tasks or when user provides multiple tasks.
Writes a file to the local filesystem. Overwrites existing files. ALWAYS prefer editing existing files in the codebase. NEVER write new files unless explicitly required.
Read tool accepts absolute paths and external file access via 'user_approved' flag, but no description explains what 'user approval' means in context of an MCP server without interactive prompts. Security implications are unclear.
Glob and LS tools lack pagination parameters and no documentation specifies what happens when directory contains thousands of files. LMs could receive unbounded result sets, exhausting context window.
Task tool subagent_type parameter uses enum values ('general-purpose', 'Explore', 'Plan') but descriptions are brief and inconsistent (note capitalization: 'Plan' vs 'general-purpose'). LLMs may struggle to select the right agent type.
LS tool parameter 'path' is not required (marked 'required: []') but description implies it defaults to cwd. Empty 'required' array with optional parameters creates ambiguity.
Write and Edit tools emphasize 'DO NOT use absolute paths' in descriptions, but no validation constraints (regex pattern, path traversal checks) are specified. LLMs could still pass invalid paths despite warnings.