Skip to main content
Glama

cluster_search

Read-only

Postgres full-text search over the agent's synced resource index (the k8s_resources cache): a Postgres read, NOT a live cluster read - it never contacts the agent and never escalates on its own. Use it for fuzzy keyword lookups: 'find anything mentioning prometheus', 'workloads using the nginx image', 'recent warning events about scheduling'. Returns top-K ranked hits with citations. Every hit carries last_seen_at and staleness_seconds: seconds since the sync last CONFIRMED the row, not since it changed (unchanged rows are re-confirmed on a heartbeat, K8S_LAST_SEEN_REFRESH_SECONDS, default 480, so a few hundred seconds is healthy). The payload carries an advisory stale_fallback_required, set when any returned hit is older than K8S_CACHE_MAX_STALENESS_SECONDS (default 300). Treat a hit as a pointer: read the object itself with cluster_describe, or through the agent (describe_resource) when you need it live. No external API; runs entirely in Postgres. Reads ONE cluster: the conversation's, or the one cluster_name / cluster_id names; off-cluster with several readable clusters it refuses and lists them.

Input Schema

NameRequiredDescriptionDefault
kindsNoOptional kind filter to scope the search.
limitNoMaximum hits to return (default 20, max 100).
queryYesSearch query - websearch_to_tsquery syntax (quoted phrases, AND/OR, NOT supported).
cluster_idYesAnkra cluster id (UUID) the call targets. Discover ids with list_clusters.
namespacesNoOptional namespace filter to scope the search.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

With readOnlyHint already covering the safety profile, the description still adds substantial context beyond annotations: it never contacts the agent, never escalates, runs entirely in Postgres with no external API, and reads exactly one cluster. It also discloses staleness semantics (last_seen_at/staleness_seconds, heartbeat refresh at K8S_LAST_SEEN_REFRESH_SECONDS default 480) and the advisory stale_fallback_required flag tied to K8S_CACHE_MAX_STALENESS_SECONDS.

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

Conciseness4/5

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

Front-loaded with the core purpose and the crucial live-vs-cache distinction before the operational details. It is dense and long, with the staleness constants packed into the middle, but nearly every sentence carries decision-relevant information rather than filler.

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

Completeness5/5

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

Although there is no output schema, the description explains the return shape (top-K ranked hits with citations), the per-hit staleness fields, and the advisory stale_fallback_required. Combined with the single-cluster scoping rule and live-read alternatives, an agent has everything needed to call and interpret it correctly.

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 100%, so the baseline is 3 and the schema already documents query syntax, limit, and filters. The description nonetheless adds meaning to cluster_id/cluster_name by explaining the single-cluster targeting rule and the multi-cluster refusal behavior, and clarifies that hits are pointers to be resolved via cluster_describe/describe_resource.

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?

States a specific verb and resource: Postgres full-text search over the synced resource index (the k8s_resources cache). It immediately distinguishes itself from live-read siblings by asserting it is 'a Postgres read, NOT a live cluster read'. An agent can tell it apart from cluster_describe/cluster_query without opening either schema.

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

Usage Guidelines5/5

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

Gives explicit when-to-use guidance with concrete examples ('find anything mentioning prometheus', 'workloads using the nginx image', 'recent warning events about scheduling'), which are fuzzy keyword lookups. It names the alternatives for live reads (cluster_describe, describe_resource) and states the single-cluster scope rule plus the refusal behavior with multiple readable clusters.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources