apollo-cache-copilot
Server Quality Checklist
Latest release: v1.0.0
- Disambiguation4/5
The tools are mostly distinct: inspect_dangling_refs is a targeted audit, patch_cache mutates, and diagnose_cache_graph produces a plan. There is a slight conceptual overlap between the two read-only tools (inspect vs. diagnose), but their descriptions clarify that inspect is narrow while diagnose is comprehensive, so an agent can usually pick correctly.
Naming Consistency5/5All tool names follow the verb_noun pattern in lowercase snake_case: inspect_dangling_refs, patch_cache, diagnose_cache_graph. The verb prefixes (inspect, patch, diagnose) are all action-oriented and the objects are descriptive. Perfectly consistent.
Tool Count4/5Three tools is on the low end but perfectly reasonable for a focused cache-copilot utility. Each tool earns its place: audit, repair, and diagnose. A slightly larger set could be justified (e.g., a separate 'explain' tool), but the current scope is coherent and not so thin as to feel incomplete.
Completeness4/5The trio covers the core workflow: diagnose to get a plan, inspect to audit a specific concern, and patch to apply changes with a dry-run safety net. One could imagine a tool to compare caches or list all entities, but for the stated purpose of auditing and repairing a serialized cache, the coverage is solid without obvious dead ends.
Average 3.7/5 across 3 of 3 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 3 commits in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI is passing
This repository is licensed under ISC License.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint:true, and the description reinforces this with 'Read-only.' Beyond that, it specifies the exact audit categories (dangling refs, unreachable entities, normalization gaps), adding meaningful context beyond the annotation. It does not discuss edge cases or error behavior, but given the annotation coverage, this is a strong but not perfect disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence, concise, and front-loaded with the core action and target. It contains zero wasted words and efficiently conveys the tool's purpose and read-only nature. Excellent structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the tool has four parameters and no schema descriptions, making the description the primary source of guidance. The description is too sparse: it omits parameter semantics, default behavior, or any usage nuance. It also fails to differentiate from siblings. Overall, it is incomplete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters1/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description provides no explanation of any parameters (cache, rootIds, includeUnreachable, includeNormalizationGaps). The agent has no guidance beyond parameter names, which is insufficient for correct invocation. The description completely fails to compensate for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Audit a serialized Apollo InMemoryCache... for dangling __refs, unreachable entities, and objects Apollo could not normalize.' It uses a specific verb (audit), a well-defined resource (cache.extract() output), and distinct detectable issues that differentiate it from siblings like patch_cache (which modifies) and diagnose_cache_graph (which likely diagnoses broader graph issues). No ambiguity remains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (audit a cache.extract() output) and sets clear input context, but it does not explicitly state when to use this tool over the sibling tools or provide exclusion criteria. With siblings present, the lack of explicit differentiation means the agent must infer usage context, which is a moderate gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate write (readOnlyHint false) and idempotent. The description adds dryRun behavior and optional gc, but it does not clarify whether the input cache is mutated in place or a new store is returned, which is a behavioral gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff, front-loaded with the action and outcome.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema and annotations, the description is too sparse for a tool with a complex operations structure. It does not explain the operation types (modify/evict) in enough detail to construct valid operations, and the gc behavior is only mentioned as optional.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description only minimally addresses parameters: it mentions gc and dryRun, but does not explain the 'operations' structure or the 'cache' parameter beyond being a serialized cache. This is insufficient for the complex nested operations schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as applying declarative repairs (modify/evict, optional gc) to a serialized cache, which is distinct from the sibling diagnostic tools. The verb 'apply' and resource 'cache' are specific, and it mentions the core actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear hint about using dryRun for validation, but it does not explicitly compare with sibling tools or specify when to use this over diagnostic tools. The usage guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set readOnlyHint=true, and the description reinforces this with 'never mutates' and 'Plans only'. It adds valuable context about the outputs (findings, patch ops, narration) and the flow. No contradictions with annotations; the description enhances behavioral understanding beyond the hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise—two sentences—and front-loaded with the core action. Every clause adds value: the first sentence states what it does and what it returns, the second clarifies safety and the relationship to patch_cache. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is moderately complex with a nested parameter and an output schema. The description covers the main outputs and the non-mutating nature, and it mentions the sibling patch_cache to complete the workflow. While it doesn't dive into cache format details or edge cases, the presence of an output schema and the clear workflow make it sufficiently complete for selection and basic usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for parameter descriptions, so the description must compensate. However, it only says 'serialized cache' without detailing the required structure, expected format, or any constraints beyond the schema's generic object shape. This is insufficient for an agent to correctly construct the 'cache' parameter, especially given its nested complexity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs a full inspect -> reason -> plan graph over a serialized cache, and distinctly distinguishes from siblings by mentioning the output is patch operations to feed into patch_cache. It specifies the resource (cache) and the action (diagnose), making it unambiguous and differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates when to use this tool: to get findings and proposed patch operations without mutating anything. It says 'Plans only; never mutates' and points to patch_cache for the actual application, giving clear workflow context. It doesn't explicitly say when not to use it (e.g., for targeted inspection with inspect_dangling_refs), but the intent is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/nihar777/apollo-cache-copilot'
If you have feedback or need assistance with the MCP directory API, please join our Discord server