--- title: "Two Approaches to Helping AI Agents Use Your API (And Why You Need Both)" draft: false slug: skill-md-meets-repl description: "Two emerging patterns for agent-assisted development: static knowledge files and dynamic tool access. How they complement each other using Qdrant as a case study." short_description: "Mintlify's SKILL.md and Armin Ronacher's REPL-first MCP solve different failure modes. Together, they define how agents should interact with developer tools." preview_image: /blog/skill-md-meets-repl/repl-skill.png social_preview_image: /blog/skill-md-meets-repl/repl-skill.png date: 2026-01-28T00:00:00-08:00 author: Thierry Damiba featured: true tags: - agents - blog --- AI coding agents fail in predictable ways when working with APIs. Two recent approaches from Mintlify and Armin Ronacher attack different failure modes. Understanding both reveals something useful about how agents should interact with developer tools. ## Two Failure Modes When an agent writes code against your API, it can fail because: 1. **It doesn't know what it doesn't know.** The agent uses a deprecated method, misconfigures a parameter, or violates a constraint that isn't obvious from type signatures. This is the "known unknowns" problem: things the API maintainer knows but the agent doesn't. 2. **It can't discover what exists.** The agent doesn't know what collections exist, what the payload schema looks like, or what data is actually in the system. This is the "unknown unknowns" problem: things specific to the user's environment that no amount of documentation covers. Most agent failures trace back to one of these. Mintlify's SKILL.md approach addresses the first. Armin Ronacher's REPL-first MCP addresses the second. ## What SKILL.md Gives You [SKILL.md](https://github.com/AgenticSkills/skills) is an emerging open standard for shipping knowledge to agents before they write code. The idea has roots in the [Cloudflare RFC](https://blog.cloudflare.com/ai-agents-open-standard), the [agentskills proposal](https://agentskills.org), and Vercel's skills CLI. [Mintlify's blog post](https://mintlify.com/blog/skill-md) by [Michael Ryaboy](https://www.linkedin.com/in/michael-ryaboy-software-engineer) showed how to apply it in practice. Decision tables for component selection, explicit gotchas sections, and auto-generating skill files from existing docs. A SKILL.md isn't documentation. It's a briefing. Decision tables, not tutorials. Gotchas, not explanations. For Qdrant, a SKILL.md might include:
This prevents the agent from using `client.search()` (deprecated), creating a collection per user (anti-pattern), or misconfiguring sparse vectors (common mistake). The guidance for all of these exists across Qdrant's tutorials, docs, and community discussions. However, finding it requires existing Qdrant context because you need to already know enough to ask the right questions. Skills package has accumulated product intuition so agents don't need to build it from scratch. ## What REPL-First MCP Gives You [Armin Ronacher](https://lucumr.pocoo.org/), creator of Flask and now building [Earendil](https://earendil.dev/), proposed a [different approach](https://lucumr.pocoo.org/2025/1/22/what-i-want-for-ai-tools/). Instead of 30 narrow MCP tools, give the agent a Python shell with the SDK pre-configured: ```python # Agent can just run this collections = client.get_collections() print([c.name for c in collections.collections]) # Then inspect the actual schema info = client.get_collection("products") print(info.config.params.vectors) ``` The agent discovers what exists by asking the system directly. No tool for "list collections." No tool for "get schema." Just Python. The REPL handles the unknown unknowns: what's actually in your Qdrant instance right now. ## Why Neither Alone Works **SKILL.md without REPL:** The agent knows *how* to use `query_points` but not *what* to query. It guesses collection names. It assumes payload fields. It writes syntactically correct code that fails at runtime. **REPL without SKILL.md:** The agent can discover what exists but still uses deprecated methods. It creates collections with wrong configurations. It makes the same mistakes it would have made without the REPL, just with more information about the data. Together, the agent workflow looks like this: The SKILL.md prevents known mistakes. The REPL handles environment-specific discovery. Both failure modes are addressed. ## Implementation The SKILL.md is just a file you drop into your project. The REPL is an MCP tool. A minimal implementation: ```python @server.call_tool() async def handle_tool_call(name: str, arguments: dict): if name == "qdrant-repl": code = arguments["code"] # client, models pre-configured in repl_globals try: result = eval(compile(code, "