Skip to main content

6 posts tagged with "tool design"

Designing tools and schemas

View All Tags

Ahrefs SEO Analysis: 53 Tools Organized Into 7 Use-Case Bundles

· 9 min read
MCPBundles

We just integrated Ahrefs—the comprehensive SEO platform—into MCPBundles. But here's the challenge: Ahrefs exposes 53 different API tools covering everything from keyword research to backlink analysis to rank tracking. How do you make 53 tools discoverable and useful without overwhelming users?

The answer: use-case driven bundles. Instead of dumping 53 tools into one massive bundle, we organized them into 7 focused bundles based on what SEO professionals actually do. Every tool appears in the main "Ahrefs" bundle, plus at least one specialized bundle aligned to specific workflows.

PostgreSQL Database Tools: 38 Tools Organized Into 6 Use-Case Bundles

· 9 min read
MCPBundles

We just integrated PostgreSQL—the powerful open-source relational database—into MCPBundles. But here's the challenge: PostgreSQL exposes 38 different database tools covering everything from SQL queries to schema inspection to performance optimization. How do you make 38 tools discoverable and useful without overwhelming users?

The answer: use-case driven bundles. Instead of dumping 38 tools into one massive bundle, we organized them into 6 focused bundles based on what database professionals actually do. Every tool appears in the main "PostgreSQL" bundle, plus at least one specialized bundle aligned to specific workflows.

MCP Tool Parameter Design: Teaching AI Agents Through Descriptions

· 11 min read
MCPBundles

When you're building MCP tools, there's a moment where you realize something counterintuitive: the description field isn't just documentation—it's instruction. Every parameter description you write is a teaching moment where the AI learns not just what a parameter is, but when to use it, why it matters, and how it impacts the operation.

This shift in thinking—from documenting to teaching—changes how you design tools. Let me show you what that looks like in practice.

The Six-Tool Pattern: MCP Server Design That Scales

· 16 min read
MCPBundles

Here's a problem I kept running into: when you're building an MCP server, you face this weird tension between giving AI agents enough control and not drowning them in options. Build 20 different tools and you're burning context window on redundant functionality. Build 3 tools with no parameters and the AI can't do anything useful.

After shipping dozens of MCP integrations, I found something that actually works: six core tools that balance OpenAI's single-string requirements with rich, parameter-driven operations. It's not arbitrary—there's a reason this number keeps working.

Weaviate Vector Database: 6 Tools for AI-Native Applications

· 8 min read
MCPBundles

Weaviate is an open-source vector database that powers AI-native applications—RAG systems, semantic search, recommendation engines, and more. But how do you make a vector database accessible to AI agents? You can't just expose raw API endpoints and expect good results.

The answer: 6 focused tools organized around what developers actually do with vector databases. Not 20 tools covering every edge case. Not 3 tools that force you into awkward patterns. Just 6 tools that handle search, storage, browsing, and management—the core workflows every vector database application needs.

MCP Batch Get: Consolidating Tool Retrieval

· 6 min read
MCPBundles

Following our prior post on wiring up an MCP server for our Django app — see How We Integrated Model Context Protocol (MCP) into Our Django App — we went back and revisited the architecture. "Too many tools" is still a huge problem for LLM productivity, which has continued into GPT5 and the latest Claude models so probably won't be solved toon. Cursor and Claude both work better when they have fewer tools to choose from, and our original setup exposed too many single-purpose GET tools. So we consolidated everything into a single, strongly-typed batch tool.

The result: one get tool, clearer schema, faster concurrent fetches, and less model confusion.