Skip to main content
Glama
malkreide

lindas-mcp

by malkreide

Server Quality Checklist

67%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v0.2.0

  • Disambiguation5/5

    Every tool has a clearly distinct role: searching cubes, inspecting structure, fetching observations, listing publishers, resolving municipalities, running raw SPARQL, and checking status. There is no overlap or ambiguity in their purposes.

    Naming Consistency4/5

    Most tools follow a consistent verb_noun pattern (search_cubes, get_cube_structure, query_cube_observations, list_publishers, resolve_municipality, run_sparql). The slight deviation is 'api_status', which reads as a noun phrase rather than an imperative verb, but it is still recognizable and not jarring.

    Tool Count5/5

    Seven tools is well within the ideal range for a focused data-access server. Each tool addresses a necessary step in the workflow without redundancy or bloat.

    Completeness5/5

    The tool surface covers the full data access cycle: discover (search_cubes, list_publishers), understand (get_cube_structure), retrieve (query_cube_observations), and handle edge cases (run_sparql, resolve_municipality, api_status). There are no obvious dead ends or missing operations for the stated domain.

  • Average 4.7/5 across 7 of 7 tools scored.

    See the Tool Scores section below for per-tool breakdowns.

    • 0 of 1 community issues answered or closed in the last 6 months
    • 34 commits in the last 12 weeks
    • Last stable release on
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI is failing
  • This repository is licensed under MIT 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.json to 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, idempotentHint, and non-destructive behavior. The description adds crucial failure behavior: even on failure, the status is evaluable, allowing differentiation between data absence and endpoint outage. This is valuable beyond the annotations and contains no contradiction.

    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 two sentences, front-loaded with the core purpose and followed by a concise behavioral note. Every sentence adds value; no fluff or repetition.

    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?

    Given the tool's simplicity (no parameters), the presence of an output schema, and rich annotations, the description fully covers purpose, failure behavior, and the diagnostic use case. No missing critical information.

    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?

    With zero parameters, the schema is trivially covered. The baseline for no parameters is 4, and the description need not elaborate on parameter meanings. Nothing additional is required.

    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 uses a specific verb+resource: 'Check whether the LINDAS SPARQL endpoint is reachable.' This unambiguously identifies the tool's purpose and differentiates it from siblings that query data or manage cubes.

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

    Usage Guidelines4/5

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

    The description explains when the tool is valuable: 'Returns an evaluable status even on failure, so an agent can tell "no data matched" apart from "the endpoint is down".' This provides clear context for use, though it does not explicitly name alternative tools or exclusion criteria.

    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 indicate read-only and non-destructive behavior, and the description adds valuable context about the return value (creator URIs and cube counts) without contradicting the annotations. It could mention more about open-world semantics, but that is already hinted by annotations.

    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 only two sentences, front-loaded with the core purpose, followed by a practical usage note. Every sentence earns its place with no wasted words.

    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?

    For a zero-parameter tool with a rich output schema and annotations, the description fully covers the purpose, what is returned, and how the output integrates with a sibling tool. It is complete for an agent to select and invoke 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?

    The tool has zero parameters, so there is nothing to document. The baseline score of 4 applies, and the description correctly focuses on the output and usage.

    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 a specific verb ('List') and resource ('federal bodies that publish cubes') and adds that it includes cube counts. It distinguishes itself from siblings by explaining the output can be used with search_cubes.

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

    Usage Guidelines4/5

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

    The description provides explicit guidance on how to use the returned creator URIs with search_cubes, implying a clear use case. It does not explicitly state when not to use it or alternatives, but the context is sufficient.

    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 establish the operation as read-only and idempotent. The description adds valuable behavioral context beyond annotations, including the exact URI format ('ld.admin.ch/municipality/<BFS>') and the BFS number's role as a universal identifier. No contradiction exists.

    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 and well-structured: a clear first sentence states the purpose, a short paragraph provides contextual significance, and an Args list documents parameters. Every sentence earns its place with no redundancy.

    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?

    For a simple resolution tool with read-only annotations and an output schema, the description covers the essential purpose, parameter semantics, and contextual significance. The presence of an output schema means return values need not be detailed in the description.

    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?

    The schema has no parameter descriptions (0% coverage), so the description's Args section is essential. It fully explains name_or_bfs with examples ("Zürich" or "261") and clarifies that language specifies the language for the name, compensating completely for the schema's lack of detail.

    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 the tool's function: 'Resolve a Swiss municipality to its LINDAS URI and BFS number.' This provides a specific verb and outcome, and it is distinct from sibling tools like search_cubes or query_cube_observations, which focus on data cubes rather than municipality resolution.

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

    Usage Guidelines4/5

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

    The description explains the BFS number as the join key across the portfolio, strongly implying when to use this tool for cross-tool consistency. It does not explicitly name alternatives or exclusion scenarios, but the context is clear enough to guide an agent.

    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 indicate read-only, idempotent, and non-destructive behavior. The description adds valuable context about the limit on observations, label resolution toggle, and the inability to filter server-side, going beyond annotation basics.

    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 well-structured with a brief overview, a contextual note about limitations, and an Args list. Every sentence provides essential information without redundancy, making it appropriately concise yet informative.

    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?

    Given the presence of an output schema and strong annotations, the description fully covers the tool's purpose, limitations, and usage context. It mentions the 'phase 2' pipeline position and provides the needed alternative for heavy queries, making it complete for invocation.

    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?

    Although the schema lists parameters, the description gives each parameter semantic meaning: cube_uri from search_cubes, language for labels, limit as observation cap, and resolve_labels toggling label replacement. This clarifies how each parameter affects behavior.

    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 the tool 'Read the actual data points of a cube' with a specific resource and action. It adds details about label resolution and keying by dimension names, distinguishing it from sibling tools like run_sparql.

    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?

    Explicitly says to use this for reading observations and to use run_sparql for heavy analytical slicing, noting the lack of cheap server-side filtering. This provides clear when-to-use and when-not-to-use guidance with a named alternative.

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

  • Behavior5/5

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

    Beyond the annotations (readOnlyHint, idempotentHint), the description discloses result caps (500 rows), runtime limit (30 seconds), and timeout behavior on unanchored scans. This is valuable behavioral context that annotations do not provide, and it does not contradict the annotations.

    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?

    The description is somewhat lengthy but well-structured: it starts with purpose, then usage guidance, guardrails, and parameter details. Each sentence adds value, though the guardrails paragraph could be slightly more compact without losing important information.

    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?

    Given the existence of an output schema, the description fully addresses purpose, usage rules, parameter requirements, and operational pitfalls (timeouts, caps). No significant gaps remain for a raw query tool of this complexity.

    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?

    The schema only defines 'query' as a string, but the description adds critical requirements: 'a complete SPARQL SELECT query, including its own PREFIX lines.' This clarifies what the parameter must contain, though it stops short of providing a full example or specifying SPARQL dialect details.

    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 'Run a raw SPARQL SELECT query' and distinguishes this from sibling structured tools by positioning it as an 'advanced escape hatch' for analytical queries they cannot express, such as cross-cube joins and aggregations.

    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?

    Explicitly instructs to 'Prefer the structured tools' and specifies when this tool is appropriate: analytical queries the guarded tools cannot express (cross-cube joins, aggregations, custom filters). It also provides concrete implementation guidance, such as always anchoring on a known class to avoid timeouts.

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

  • Behavior5/5

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

    Annotations already mark the tool as read-only, idempotent, and non-destructive. The description adds valuable behavioral context beyond those hints: it returns a licence that is often a Fedlex URI, and it discloses the semantic structure of the response (KeyDimension, MeasureDimension). There is no contradiction with the annotations.

    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 front-loaded with a concise purpose statement followed by a compact explanation of what the tool tells the agent. The Args section is clearly separated and each sentence delivers useful information without filler. It is appropriately sized for the tool's complexity.

    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?

    Given the presence of an output schema, the description does not need to detail return structure. It covers the tool's role in the workflow, parameter semantics, the licensing edge case, and its relationship to sibling tools, making it complete for a read-only structure-resolution tool.

    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?

    The schema has no descriptions for cube_uri or language (0% schema description coverage), so the description carries the full burden. The Args section explains that cube_uri comes from search_cubes and that language controls dimension names and descriptions, fully compensating for the schema's lack of semantic detail.

    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 opens with a specific verb+resource ('Read a cube's dimensions and measures') and immediately differentiates from siblings by labeling it 'phase 1' of the two-phase access pattern. It also clarifies what kind of data is returned (dimensions, measures, code lists), distinguishing it from query_cube_observations.

    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?

    The description explicitly states 'always call this before data' and frames the tool as 'phase 1', telling the agent exactly when to invoke it. It also describes what information the tool reveals (filterable dimensions, measured values, code lists) and how to handle the licence (Fedlex URI resolution), providing clear decision guidance.

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

  • Behavior5/5

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

    While annotations already indicate read-only, open-world, and idempotent behavior, the description adds non-obvious context: 'By default only the newest published version of each cube is returned; set latest_only=False to see every version.' It also clarifies query matching semantics against names and descriptions in the chosen language, going well beyond the structured annotations.

    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 compact and well-structured: a one-sentence purpose, a workflow note, a behavioral default, then a terse Args list. Every sentence contributes value, with no redundancy or fluff, making it easy for an agent to scan and retain.

    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?

    For a tool with 5 parameters and an output schema, the description covers the tool's role, integration with siblings, all parameter semantics, and key version-collapse behavior. The output schema handles return values, so no further explanation is needed. The description is fully adequate for correct selection and invocation.

    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. It does so with a dedicated Args block explaining every parameter, providing example values for query, the source for creator_uri, a range for limit, and the meaning of latest_only. This adds substantial meaning beyond the bare schema titles.

    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 opens with 'Find statistical data cubes in LINDAS by topic,' clearly stating the verb, resource, and scope. It further distinguishes itself from sibling tools by noting that it returns cube URIs to be passed to get_cube_structure, establishing a specific role.

    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?

    The description explicitly labels the tool 'The entry point' and instructs that returned URIs should be passed to get_cube_structure, creating a clear workflow. It also mentions that creator_uri comes from list_publishers, tying the tool to its siblings and giving practical when-to-use guidance.

    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

lindas-mcp MCP server

Copy to your README.md:

Score Badge

lindas-mcp MCP server

Copy to your README.md:

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/malkreide/lindas-mcp'

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