SourceVahti
Server Quality Checklist
Latest release: v0.3.0
- Disambiguation4/5
The three tools target distinct operations: searching indicators, retrieving full observation series, and fetching the latest observation. Search vs. retrieval is clear, and the latest observation is a specific convenience function, though it could be seen as a subset of get_observations.
Naming Consistency5/5All tool names follow the verb_noun pattern consistently: search_indicators, get_observations, get_latest_observation. The verbs (search/get) and noun phrases are clear and predictable.
Tool Count4/5With only 3 tools, the server is minimal but well-suited for a focused data-access purpose. It feels slightly thin but not under-scoped, and each tool serves a distinct and necessary function.
Completeness4/5The domain is read-only indicator/observation data access. The tools cover searching for definitions, retrieving time series, and getting the latest value. A possible gap is a direct 'get_indicator' by exact ID, but search_indicators likely handles that. Core workflows appear covered.
Average 3.5/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
- 6 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 Apache 2.0.
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
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is known. The description adds the notion of normalization and the requirement to resolve the full definition, which provides some context about behavior. No contradiction found, but no additional details on rate limits, pagination, or response characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no redundant words. It is front-loaded with the core function, but the second clause is somewhat cryptic, reducing clarity slightly.
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?
The description is too minimal for a tool with 9 optional parameters. It does not explain the relationship with search_indicators (which supplies indicator_id and rate_type), nor does it mention any prerequisites or typical usage scenarios. The output schema covers return values, but usage context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter has an individual description. The tool description adds no parameter-level information beyond what the schema provides, keeping this at baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description says 'Return a normalised series', which gives a specific verb and resource. It distinguishes from sibling get_latest_observation (which returns a single observation) by explicitly returning a series. However, the phrase 'only after resolving its full definition' is vague about what that entails.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternative tool guidance. The phrase 'only after resolving its full definition' hints that some prerequisite must be met but does not explain how or when to use this tool vs search_indicators. Missing clear exclusions or alternatives.
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?
The description adds that the result includes definition and full provenance, but it does not mention error conditions, how 'latest' is determined, or what happens when no observation exists. The readOnlyHint=true annotation covers safety, so the description doesn't need to restate that, but more behavioral detail would be helpful.
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 a single sentence that efficiently states the action, resource, and key added value ('definition and full provenance'). No fluff or unnecessary details are present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The presence of an output schema and fully described parameters covers the return value and argument semantics. However, the description lacks usage context and does not differentiate from sibling tools, which is a notable gap for a tool with this many optional filters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with descriptive text, so the baseline is 3. The description itself does not add parameter-level meaning, but the schema already provides clarity, including important warnings like rate_type's ambiguity error.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') and resource ('latest observation'), and adds 'with definition and full provenance' to clarify scope. It distinguishes from siblings by focusing on the singular latest result, though it doesn't explicitly contrast with get_observations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus get_observations or search_indicators. It does not mention scenarios like retrieving a single most recent record versus a full time series, leaving the agent to infer the intended use from context.
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?
The description discloses that the search is precise ('precisely defined indicators') and returns all valid rate variants, which goes beyond the readOnlyHint annotation. It does not contradict the annotation, and adds behavioral nuance about the comprehensiveness of results. However, it does not elaborate on additional behaviors like pagination or how results are ordered, but with the annotation providing the read-only profile, this is adequate.
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 a single, 11-word sentence that front-loads the action and purpose. It contains no filler or redundant information, and every word contributes to meaning. This is a model of concise writing.
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 has six parameters and an output schema, but the schema descriptions are comprehensive and the annotations supply the read-only safety context. The description covers the core purpose and a key behavioral quirk (exposing all rate variants), which is enough given the structured data. It could be slightly more explicit about how it fits into the workflow with observations, but overall it is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema descriptions cover 100% of the parameters, providing detailed explanations for each field such as examples for query and source. The tool description adds no additional parameter-specific semantics beyond the schema, so the baseline of 3 applies. The description's mention of 'valid rate variants' tangentially relates to the unit/geography filtering but does not clarify their syntax.
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 performs a search over health indicators, using the specific verb 'Search' and resource 'precisely defined indicators.' It also adds a unique characteristic ('expose all valid rate variants') that distinguishes it from sibling tools like get_observations, which fetch observation data. This makes the purpose unambiguous and well-scoped.
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 the tool is used for searching indicator definitions, but it does not explicitly contrast it with the sibling tools get_observations or get_latest_observation. There is no when-not-to-use guidance or alternative recommendations. The context is inferred from the verb 'Search' and the sibling names, but not explicitly stated.
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/heidihelena/sourcevahti'
If you have feedback or need assistance with the MCP directory API, please join our Discord server