Skip to main content
Glama

route_conflict_analysis

Read-only

Analyze route tables to find shadowed routes, dead endpoints, and redirect loops. Provide routes and services to get detailed conflict findings.

Instructions

[READ] Shadowed routes, dead routes, and redirect loops (static).

The flagship routing hygiene analysis: fetches the route table and service list and statically finds (1) routes fully covered by an earlier/higher- priority route (they can never match), (2) routes pointing at a missing service or one with zero servers up, and (3) redirect chains that loop. Every finding names the covering route / missing service. Pass 'routes' (and optionally 'services') for pure analysis.

Args: routes: Injected rows {name, hosts, paths, priority, service, enabled, redirectTo}; skips the live pull. services: Injected rows {name, serversTotal, serversUp} for dead-route detection. target: Proxy target name from config; omit for the default.

Returns dict: {routesEvaluated, shadowedCount, deadCount, redirectLoopCount, shadowedRoutes, deadRoutes, redirectLoops, note}.

Input Schema

NameRequiredDescriptionDefault
routesNo
targetNo
servicesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.6.0

TDQS

A4.2/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=true, so the description adds real value by disclosing that the analysis is static, that it fetches the route table and service list, and that injecting routes 'skips the live pull.' It also describes what each finding reports (naming the covering route / missing service), going beyond the safety hint.

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 a one-line summary followed by the analysis breakdown, args, and returns; almost every sentence earns its place. It is somewhat long, but the structure (summary / Args / Returns) keeps it navigable rather than wasteful.

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?

With no output schema, the description steps in by enumerating the return dict keys (routesEvaluated, shadowedCount, deadCount, redirectLoopCount, and the finding lists). A three-parameter read tool with light annotations is well covered, though the 'note' field is left unexplained.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full burden and does so: it defines the field shape of injected routes ({name, hosts, paths, priority, service, enabled, redirectTo}) and services ({name, serversTotal, serversUp}) and clarifies target as a proxy target name that defaults when omitted. This fully compensates for the absent schema descriptions.

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 ('statically finds') and enumerates the three exact findings: shadowed routes, dead routes, and redirect loops. It is clearly distinguishable from siblings like list_routes, route_detail, and find_route, which merely enumerate rather than analyze conflicts.

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

Usage Guidelines3/5

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

It explains how to invoke it ('Pass routes and optionally services for pure analysis') and that omitting routes triggers the live pull, which is operational guidance. However, it never explicitly contrasts itself with siblings such as find_route or list_routes, so the when-to-use-vs-alternative decision is left to inference.

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