Skip to main content
Glama
minuetai
by minuetai

search_agents

Find ERC-8004 agents by name substring. Returns up to a specified number of matching agents for quick discovery.

Instructions

Search indexed ERC-8004 agents.

Args: query: Optional substring to match against agent name. limit: Maximum number of agents to return (default 25).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryNo
limitNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • The actual handler/implementation of the 'search_agents' MCP tool. It is decorated with @mcp.tool(), takes optional query and limit parameters, calls the MinuetClient.list_agents() API, and returns the agents data.
    @mcp.tool()
    async def search_agents(query: str | None = None, limit: int = 25) -> dict[str, Any]:
        """Search indexed ERC-8004 agents.
    
        Args:
            query: Optional substring to match against agent name.
            limit: Maximum number of agents to return (default 25).
        """
        async with MinuetClient() as client:
            data = await client.list_agents(name=query, limit=limit)
        agents = data.get("agents", [])[:limit]
        return {"count": len(agents), "agents": agents}
  • The @mcp.tool() decorator registers the search_agents function as an MCP tool on the FastMCP server instance.
    @mcp.tool()
    async def search_agents(query: str | None = None, limit: int = 25) -> dict[str, Any]:
  • The MinuetClient.list_agents() method that the search_agents handler calls. It makes a GET request to /api/agents with optional name, mcpTools, active, and limit query parameters.
    async def list_agents(
        self,
        name: str | None = None,
        mcp_tools: str | None = None,
        active: bool | None = None,
        limit: int | None = None,
    ) -> dict[str, Any]:
        params: dict[str, Any] = {}
        if name:
            params["name"] = name
        if mcp_tools:
            params["mcpTools"] = mcp_tools
        if active is not None:
            params["active"] = "true" if active else "false"
        if limit is not None:
            params["limit"] = limit
        return await self._get("/api/agents", params=params or None)
  • The input schema for the search_agents tool: optional 'query' (str) and 'limit' (int) parameters. The return type is dict[str, Any] containing 'count' and 'agents' keys.
    """Search indexed ERC-8004 agents.
    
    Args:
        query: Optional substring to match against agent name.
        limit: Maximum number of agents to return (default 25).
    """
    async with MinuetClient() as client:
        data = await client.list_agents(name=query, limit=limit)
    agents = data.get("agents", [])[:limit]
    return {"count": len(agents), "agents": agents}
  • Smoke test verifying that 'search_agents' is among the registered tools on the MCP server.
    async def test_expected_tools_registered() -> None:
        from minuet_mcp.server import mcp
    
        tools = await mcp.list_tools()
        names = {t.name for t in tools}
        expected = {
            "search_agents",
            "get_agent",
            "get_agent_relationships",
            "get_hub_agents",
            "get_owner_ecosystems",
            "get_relationship_graph",
            "get_network_stats",
            "get_recent_relationships",
        }
        assert expected <= names, f"missing tools: {expected - names}"
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description should disclose behavioral traits. It mentions the parameters and their meanings but does not discuss query behavior when null, case sensitivity, or result structure. Some context is added, but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with a clear purpose sentence followed by parameter explanations. No unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, the description does not need to detail return values. It covers the essential information for a simple search tool with two optional parameters, though it could mention that results are limited to indexed agents.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must add meaning. It explains query as a substring match against agent name and limit as maximum agents returned (with default), providing useful context beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it searches indexed ERC-8004 agents, using a specific verb and resource. This distinguishes it from siblings like get_agent (single agent) and get_hub_agents (hub-specific).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like get_agent or get_hub_agents. The description does not mention prerequisites or contextual cues for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/minuetai/minuet-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server