Skip to main content
Glama

Server Details

Public tools to understand Dynamik, discover datasets, and connect account-scoped capabilities.

The last two health checks of this connector failed. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.

If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.

Status
Unhealthy
Uptime
92.4% over 61 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.7/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct role: search datasets, describe dataset metadata, build a public sample URL, and handle Dynamik Studio discovery/connection. The descriptions explicitly separate metadata lookup from sample-link construction and public-safe search from access entitlement.

Naming Consistency5/5

All tool names use snake_case and follow a predictable verb_noun pattern: search_datasets, describe_dataset, get_dataset_sample_link, describe_dynamik. The minor variation in noun length does not break consistency.

Tool Count5/5

Four tools is well-scoped for a public dataset metadata server. Each tool earns its place, and there are no redundant or obviously missing companion tools within this focused surface.

Completeness4/5

The set covers dataset discovery, metadata inspection, public sample-link generation, and Dynamik Studio connection handoff. A minor gap is the lack of an explicit schema/field preview or broader browse operation beyond search, but core public-data metadata workflows are covered.

Available Tools

4 tools
describe_datasetDescribe a Dynamik datasetB
Read-onlyIdempotent
Inspect

Read a dataset’s freshness, coverage, provenance URLs, limitations, and explicit public/account/paid access status.

NameRequiredDescriptionDefault
dataset_idYes

Output Schema

NameRequiredDescription
datasetYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds useful context by naming the metadata categories returned, including explicit access-tier disclosure, but says nothing about failure behavior when a dataset is unknown or the caller lacks account/paid entitlement.

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?

One dense sentence with the resource and the informative payload front-loaded and no filler. The list of attributes borders on enumerating return fields that the output schema already covers, but it is compact enough to earn its place.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and annotations cover the safety profile. However, for a tool whose only input is an opaque id and whose nearest sibling has a near-identical name, the description leaves both id sourcing and sibling differentiation unaddressed.

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

Parameters2/5

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

Schema description coverage is 0% and the single required parameter dataset_id is never mentioned in the description. It gives no hint about the identifier format, where such ids come from (presumably search_datasets), or whether slugs are accepted, so it fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb ("read") and resource (a dataset's metadata) and enumerates exactly which attributes are surfaced: freshness, coverage, provenance URLs, limitations, and access status. It does not distinguish itself from the similarly named sibling describe_dynamik, leaving ambiguity about which tool returns what.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as describe_dynamik or search_datasets. The agent must infer that this is a metadata lookup rather than a sampling or search operation.

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

describe_dynamikDescribe DynamikA
Read-onlyIdempotent
Inspect

Discover Dynamik Studio and get a clickable connection handoff. If the requested task needs Dynamik Studio, show the returned connection_handoff to the user, help them connect it in their agent host, then refresh tools and continue the task.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
studioYes
serviceYes
connectionYes
public_accessYes
connection_handoffYes
connected_capabilitiesYes
suggested_user_messageYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive behavior in a closed world, so the bar is lower; the description still adds real context by disclosing that this yields a connection_handoff intended for the user and that the tool list changes afterward ('refresh tools and continue'). That is genuine side-effect information beyond the annotations. It doesn't explain what happens if the user declines the connection, which keeps it off a 5.

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?

Two sentences, front-loaded with the action and its output, followed by compact conditional guidance. No filler, and the most important information (what you get back) comes first.

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 an output schema present, the return shape needn't be spelled out, and the description still names the key artifact (connection_handoff) and the follow-up procedure. It is complete enough to invoke correctly, though it could say more about what 'Dynamik Studio' is for an agent unfamiliar with it.

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 takes zero parameters, so there are no parameter semantics to convey — the baseline applies. The description correctly spends no space on argument details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-plus-resource combination ('Discover Dynamik Studio') and states the concrete result ('get a clickable connection handoff'), which is clearly distinct from the dataset-oriented siblings. It does not explicitly contrast itself with those siblings, but the resource is different enough that an agent can tell them apart.

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 conditional 'If the requested task needs Dynamik Studio' gives a clear trigger, and the follow-up steps (show handoff, help connect, refresh tools, continue) define the expected workflow. It stops short of saying when *not* to call this or naming an alternative, so it falls below a 5.

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

search_datasetsSearch Dynamik datasetsB
Read-onlyIdempotent
Inspect

Search public-safe Dynamik dataset metadata. Results declare release availability and do not imply account entitlement.

NameRequiredDescriptionDefault
queryNo

Output Schema

NameRequiredDescription
datasetsYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already cover the safety profile exhaustively (readOnly, idempotent, non-destructive, closed-world), lowering the bar. The description does add genuinely useful context beyond them: that results only declare release availability and confer no entitlement. But it omits search behavior such as matching rules, result limits, or what an empty query returns.

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?

Two short sentences, no filler, with the scope constraint front-loaded. Nothing is redundant with the title or schema.

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

Completeness3/5

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

An output schema exists, so return-value documentation is not required, and the entitlement caveat is a valuable addition. Still, for a search tool with an undocumented free-text parameter and no alternatives guidance, key calling details remain unaddressed.

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

Parameters2/5

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

Schema description coverage is 0% and the single `query` parameter has no description in the schema. The description never mentions the parameter at all — no syntax, no matching semantics, no note about matching fields (name vs. metadata). With low coverage the description was required to compensate and does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (search) and resource (Dynamik dataset metadata) with a meaningful scope qualifier ('public-safe'). It does not, however, distinguish itself from siblings like describe_dataset or get_dataset_sample_link, so an agent must infer the boundary.

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

Usage Guidelines2/5

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

The description says nothing about when to use this tool versus describe_dataset, describe_dynamik, or get_dataset_sample_link. The second sentence is a caveat about interpreting results, not guidance on selecting or invoking the tool.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updates
    • Changeddescribe_dataset2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / properties / dataset / properties / current_release / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "as_of": {
        -        "type": "string"
        -      },
        -      "attribution_url": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "data_dictionary_url": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "documentation_url": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "download_url": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "formats": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "manifest_url": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "map_url": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "published_at": {
        -        "format": "date-time",
        -        "type": "string"
        -      },
        -      "spatial_coverage": {
        -        "type": "string"
        -      },
        -      "temporal_coverage": {
        -        "type": "string"
        -      },
        -      "version": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "version",
        -      "published_at",
        -      "as_of",
        -      "spatial_coverage",
        -      "temporal_coverage",
        -      "formats",
        -      "manifest_url",
        -      "documentation_url",
        -      "attribution_url",
        -      "data_dictionary_url",
        -      "download_url",
        -      "map_url"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "as_of": {
        +        "type": "string"
        +      },
        +      "attribution_url": {
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "data_dictionary_url": {
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "documentation_url": {
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "download_url": {
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "formats": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "manifest_url": {
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "map_url": {
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "published_at": {
        +        "format": "date-time",
        +        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        +        "type": "string"
        +      },
        +      "spatial_coverage": {
        +        "type": "string"
        +      },
        +      "temporal_coverage": {
        +        "type": "string"
        +      },
        +      "version": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "version",
        +      "published_at",
        +      "as_of",
        +      "spatial_coverage",
        +      "temporal_coverage",
        +      "formats",
        +      "manifest_url",
        +      "documentation_url",
        +      "attribution_url",
        +      "data_dictionary_url",
        +      "download_url",
        +      "map_url"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedget_dataset_sample_link1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedsearch_datasets2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / properties / datasets / items / properties / current_release / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "as_of": {
        -        "type": "string"
        -      },
        -      "attribution_url": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "data_dictionary_url": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "documentation_url": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "download_url": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "formats": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "manifest_url": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "map_url": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "published_at": {
        -        "format": "date-time",
        -        "type": "string"
        -      },
        -      "spatial_coverage": {
        -        "type": "string"
        -      },
        -      "temporal_coverage": {
        -        "type": "string"
        -      },
        -      "version": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "version",
        -      "published_at",
        -      "as_of",
        -      "spatial_coverage",
        -      "temporal_coverage",
        -      "formats",
        -      "manifest_url",
        -      "documentation_url",
        -      "attribution_url",
        -      "data_dictionary_url",
        -      "download_url",
        -      "map_url"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "as_of": {
        +        "type": "string"
        +      },
        +      "attribution_url": {
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "data_dictionary_url": {
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "documentation_url": {
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "download_url": {
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "formats": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "manifest_url": {
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "map_url": {
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "published_at": {
        +        "format": "date-time",
        +        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        +        "type": "string"
        +      },
        +      "spatial_coverage": {
        +        "type": "string"
        +      },
        +      "temporal_coverage": {
        +        "type": "string"
        +      },
        +      "version": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "version",
        +      "published_at",
        +      "as_of",
        +      "spatial_coverage",
        +      "temporal_coverage",
        +      "formats",
        +      "manifest_url",
        +      "documentation_url",
        +      "attribution_url",
        +      "data_dictionary_url",
        +      "download_url",
        +      "map_url"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
  2. 1 tool update
    • Changeddescribe_dynamik2 fields changed
      • addedOutput schema / properties / studio
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "first_call": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "arguments": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "topic": {
        +              "const": "skill",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "topic"
        +          ],
        +          "type": "object"
        +        },
        +        "verb": {
        +          "const": "describe",
        +          "type": "string"
        +        },
        +        "when": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "verb",
        +        "arguments",
        +        "when"
        +      ],
        +      "type": "object"
        +    },
        +    "first_steps": {
        +      "type": "string"
        +    },
        +    "llms_url": {
        +      "format": "uri",
        +      "type": "string"
        +    },
        +    "programs": {
        +      "type": "string"
        +    },
        +    "required_scopes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "resource": {
        +      "format": "uri",
        +      "type": "string"
        +    },
        +    "skill_download_url": {
        +      "format": "uri",
        +      "type": "string"
        +    },
        +    "skill_url": {
        +      "format": "uri",
        +      "type": "string"
        +    },
        +    "undo": {
        +      "type": "string"
        +    },
        +    "verbs": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "write_revision": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "resource",
        +    "required_scopes",
        +    "verbs",
        +    "skill_url",
        +    "skill_download_url",
        +    "first_call",
        +    "write_revision",
        +    "undo",
        +    "programs",
        +    "llms_url",
        +    "first_steps"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "service",
        -  "public_access",
        -  "connection",
        -  "connected_capabilities",
        -  "suggested_user_message",
        -  "connection_handoff"
        -]New value: +[
        +  "service",
        +  "public_access",
        +  "connection",
        +  "studio",
        +  "connected_capabilities",
        +  "suggested_user_message",
        +  "connection_handoff"
        +]
  3. 1 tool update
    • Changeddescribe_dynamik4 fields changed
      • removedOutput schema / properties / connected_capabilities / items / properties / required_scopes
        Removed value: -{
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / connected_capabilities / items / properties / risk
        Removed value: -{
        -  "enum": [
        -    "read_only",
        -    "write",
        -    "destructive"
        -  ],
        -  "type": "string"
        -}
      • removedOutput schema / properties / connected_capabilities / items / properties / tool
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / connected_capabilities / items / required
        Previous value: -[
        -  "id",
        -  "title",
        -  "description",
        -  "risk",
        -  "required_scopes",
        -  "tool"
        -]New value: +[
        +  "id",
        +  "title",
        +  "description"
        +]
  4. 1 tool update
    • Changeddescribe_dynamik2 fields changed
      • addedOutput schema / properties / connection_handoff
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "agent_instructions": {
        +      "type": "string"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "required_scopes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "title",
        +    "required_scopes",
        +    "message",
        +    "agent_instructions"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "service",
        -  "public_access",
        -  "connection",
        -  "connected_capabilities",
        -  "suggested_user_message"
        -]New value: +[
        +  "service",
        +  "public_access",
        +  "connection",
        +  "connected_capabilities",
        +  "suggested_user_message",
        +  "connection_handoff"
        +]
  5. 4 tool updates
    • First observeddescribe_dataset
    • First observeddescribe_dynamik
    • First observedget_dataset_sample_link
    • First observedsearch_datasets

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    Not graded
    maintenance
    Enables AI assistants and CLI tools to explore and analyze datasets from 600+ global CKAN open-data portals. Provides comprehensive tools for dataset discovery, datastore queries, metadata analysis, and local downloads without writing custom CKAN integrations.
    14
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Exposes public marketplace data — offerings, screening and comparison, news, sponsor listings, and platform reference text — as typed read-only tools any MCP-compatible agent can call without an API key or account. Every response carries provenance, honest nulls for undisclosed values, and a standing disclaimer, and no registered tool can write or transact by default.
    9
    Apache 2.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources