Skip to main content
Glama

Server Quality Checklist

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

  • Disambiguation5/5

    Each tool targets a distinct aspect of VPN management: connection, settings, status, info, and listings. There is no overlap in functionality.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern with underscores, making them predictable and easy to understand. Examples include check_leak, get_status, set_dns, list_countries.

    Tool Count4/5

    18 tools is slightly above the ideal range of 3-15, but each tool covers a necessary function for a comprehensive VPN configuration surface, so the count is still reasonable.

    Completeness4/5

    The set covers core VPN operations (connect, disconnect, status, settings) and advanced features (DAITA, multihop, obfuscation). Minor gaps like account login/logout or device management are not critical for the primary use case.

  • Average 4.1/5 across 18 of 18 tools scored. Lowest: 3.3/5.

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

    • No community issues in the last 6 months
    • 0 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 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

  • Behavior3/5

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

    With no annotations, the description carries full burden. It explains the behavioral change (adding an extra privacy layer) and states the return value, but omits details like immediate effect, impact on existing connections, or authorization needs.

    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 concise with two paragraphs and an Args/Returns section. No redundant information, though the Args section partially duplicates schema structure.

    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?

    Missing pointers to sibling tools that list valid country/city codes. Also fails to clarify that entry_country and entry_city are only relevant when enabled is true. The return value description is somewhat vague ('current relay constraints').

    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 coverage is 0%, so description must compensate. It lists parameter purposes (enabled, entry_country, entry_city) but lacks validation hints or references to sibling tools (list_cities, list_countries) that provide valid values.

    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 'Enable or disable multihop (chained VPN connections)' and explains what multihop does, distinguishing it from sibling tools like set_location or set_protocol.

    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 lacks guidance on when to use this tool over alternatives. No explicit conditions, prerequisites, or context for choosing multihop among many similar settings.

    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 explains that DAITA adds padding to WireGuard traffic to defeat traffic analysis, which gives some behavioral context. It also states the return value. However, with no annotations provided, the description carries the full burden of disclosing side effects, permissions, or rate limits, which are not mentioned.

    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 extremely concise, with three short paragraphs. The first sentence states the purpose, followed by a brief explanation of DAITA, then parameter and return descriptions. Every sentence adds value with no repetition.

    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?

    For a simple toggle tool with one parameter and an output schema, the description is nearly complete. It explains the feature, parameter, and return value. However, it lacks usage guidelines or notes on when to use this tool, which would enhance completeness.

    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 input schema defines 'enabled' as a boolean with no description. The tool's description adds semantic meaning: 'True to enable, False to disable.' This compensates for the 0% schema description coverage and clarifies the parameter's effect.

    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 clearly states the tool's purpose: enabling or disabling DAITA. The verb 'set' is implied by the name, and the description specifies the action. It distinguishes from sibling tools like set_dns or set_killswitch by focusing on the DAITA feature, but it does not explicitly contrast with other settings.

    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?

    No guidance is provided on when to enable or disable DAITA versus using other tools or under what circumstances the feature should be toggled. There is no mention of prerequisites, context, or alternatives, leaving the agent to infer usage.

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

  • Behavior2/5

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

    With no annotations, the description must disclose behavioral traits. It states it connects and returns status, but does not mention side effects like interrupting an existing connection, required permissions, or rate limits. This is insufficient for a mutation tool.

    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 efficient: a one-sentence purpose followed by clear Args and Returns sections. Every sentence adds value without redundancy.

    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?

    The description covers purpose, parameters, and return value (aided by output schema). However, it lacks behavioral context such as what happens if already connected or whether connection is persistent. Sibling tools like set_location suggest a need for clearer differentiation.

    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?

    Despite 0% schema coverage, the description adds meaning by listing three parameters in Args with format examples (e.g., 'se' for country), and explains that default behavior uses currently configured relay if no location params are provided.

    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 'Connect to Mullvad VPN' as the primary action, with optional location setting. It is a specific verb-resource pair that distinguishes itself from sibling tools like disconnect, get_status, and set_location.

    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?

    The description implies use when connecting to VPN, but does not explicitly state when to use this tool versus alternatives like set_location (which sets location without connecting) or reconnect. No when-not-to-use guidance is provided.

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

  • Behavior2/5

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

    No annotations are provided, so the description must disclose behavioral traits. It only states that the tool sets the mode and returns settings, without mentioning side effects (e.g., connection disruption), prerequisites (e.g., being connected), or error handling. For a mutation tool, this is insufficient transparency.

    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 very concise with a clear structure: a title line, a one-sentence explanation, and formatted Args/Returns sections. Every sentence adds value without redundancy.

    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?

    The description covers the basic function, parameter, and return value, which is adequate for a simple tool. However, it lacks usage context, such as when to apply (e.g., while connected) or potential side effects. Given the output schema exists, the return is documented externally, but behavioral completeness is still missing.

    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 has 0% coverage for parameter descriptions, but the description lists the allowed values for the 'mode' parameter (auto, off, wireguard-port, etc.), adding valuable information beyond the schema. However, it does not explain what each mode does, which would further enhance understanding.

    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 purpose: setting anti-censorship/obfuscation mode for disguising VPN traffic. It mentions the specific resource ('anti-censorship / obfuscation mode') and verb ('Set'), distinguishing it from sibling tools like set_daita or set_protocol.

    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?

    The description lacks explicit guidance on when to use this tool versus alternatives. While the purpose is clear, it does not provide conditions (e.g., only when connected) or mention when not to use it. Siblings like set_dns or set_location are different, but no comparative guidance is given.

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

  • Behavior2/5

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

    No annotations are provided, so the description carries the full burden. It describes the action ('Configure') and the return value, but does not disclose any side effects, prerequisites (e.g., must be connected), error behavior, or whether changes are reversible. This is a significant gap for a configuration tool.

    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 well-structured with a note, args list, and returns section. It is concise but could be slightly tighter (e.g., avoiding repetition of 'on' or 'off' in each arg). Overall, it is efficient and easy to parse.

    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?

    Given the tool's simplicity (2 optional parameters) and no annotations, the description covers the purpose and parameters adequately. However, it lacks details about validation, default behavior, and post-change effects, which are important for an agent to use the tool safely.

    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 0% schema description coverage, the description compensates by explaining each parameter's purpose and expected values ('on' or 'off'). This adds meaning beyond the bare schema, making it clear what each parameter does and what values to use.

    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 it 'Configure[s] WireGuard tunnel protocol options' and specifies the two parameters, quantum resistance and IPv6. It distinguishes from sibling tools by noting that Mullvad CLI 2026.1 is WireGuard-only, so this tool is specifically for WireGuard protocol settings.

    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 context that the tool is for WireGuard-specific options and mentions the CLI version as WireGuard-only. It does not explicitly exclude alternative tools or provide when-not-to-use guidance, but the purpose is clear enough for an agent to infer usage.

    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?

    No annotations are provided, so the description carries the full burden. It describes the return structure but does not mention that the tool is read-only, has no side effects, or any behavioral traits beyond the output.

    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 very concise: one sentence stating the purpose followed by a list of return keys. No unnecessary words, and front-loaded with the primary action.

    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?

    Given no parameters, an output schema, and no annotations, the description is mostly complete. It lists the return keys, though it could explicitly mention that the tool has no side effects.

    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?

    There are no parameters (0 params), so baseline is 4. The description does not need to add parameter semantics, and it does not contradict anything.

    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 that the tool retrieves all current Mullvad VPN settings as a structured object, listing the specific keys (killswitch, dns, etc.), which distinguishes it from sibling tools like get_account_info or get_status.

    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?

    The description does not explicitly state when to use this tool versus alternatives. It implies it is for reading all settings, but lacks guidance on when not to use it or comparison with set_* tools.

    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?

    No annotations provided; description carries full burden. It discloses return structure but not authentication requirements, side effects, or rate limits, leaving gaps for an agent.

    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?

    Three sentences, front-loaded purpose, no wasted words. Return format clearly specified.

    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?

    Complete for a simple list tool with no parameters and output schema implied. Could be improved by mentioning related tools (list_cities, list_servers) for context.

    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?

    No parameters; schema coverage is 100%. Baseline of 4 for zero-parameter tools applies, and description adds no param info (unnecessary).

    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?

    Description clearly states 'List all available Mullvad VPN countries with server counts' with specific verb and resource. Distinguishes from siblings like list_cities and list_servers.

    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?

    No explicit guidance on when to use this tool versus alternatives like list_cities or list_servers. The simple nature implies lightweight listing, but lacks context.

    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?

    No annotations are provided, so the description carries the burden. It states that the tool returns 'Current DNS settings after the change', indicating a mutation with a response. It does not disclose side effects, required permissions, or whether changes are reversible, but it does clarify the behavior of each parameter.

    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 well-structured with Args and Returns sections, using clear bullet-style text. It is fairly concise given the number of parameters, though some redundancy exists (e.g., repeating 'block' in each parameter name in the description).

    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 8 parameters and no annotations, the description covers all parameters, their conditions, and the return value. The output schema is present, but the description still clarifies the return behavior. No critical gaps.

    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 input schema has 0% description coverage, but the description's Args section explains each parameter's purpose and conditions (e.g., 'servers' only when mode is custom, blocking options only in default mode). This adds critical meaning beyond the schema's type and default values.

    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 it 'Configure DNS settings' and distinguishes between 'default' and 'custom' modes, listing specific blocking options. This verb+resource pair is distinct from sibling tools like set_daita or set_killswitch.

    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?

    The description explains the two modes (default vs custom) and their associated parameters, implying usage contexts. However, it does not explicitly state when to use this tool over alternatives, nor does it provide prerequisites or exclusions.

    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?

    No annotations are provided, so the description must disclose behavioral traits. It states that the tool sets location and returns current relay constraints, but it does not mention side effects, permission requirements, or rate limits. The behavior is adequately described for a simple setter, but lacks depth.

    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 one-line summary followed by parameter explanations and a return note. Every sentence adds value with no redundant information.

    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?

    Given three parameters and no annotations, the description covers the purpose, parameter details, and return value. It could potentially mention that setting location affects the VPN connection state, but it is sufficiently complete for a straightforward configuration 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 input schema has 0% description coverage, but the description compensates fully by explaining each parameter with examples and format hints (e.g., 'Two-letter country code (e.g. "se") or "any" for automatic.'). This adds significant meaning beyond the bare schema.

    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 purpose: 'Set preferred VPN connection location.' It uses a specific verb+resource combination and distinguishes it from sibling tools like set_dns or set_killswitch.

    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?

    The description explains what the tool does but does not provide guidance on when to use it versus alternatives or when not to use it. The context of setting a VPN location is implied, but no explicit usage context or exclusions are given.

    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?

    With no annotations, the description carries the full burden. It discloses idempotency and the return value (current status after disconnect attempt). It is transparent about the core behavior, though could mention error handling.

    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 very concise, with two short sentences and a return line. Every sentence provides essential information, and the action is front-loaded.

    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?

    Given the simplicity of the tool (no parameters, output schema exists), the description covers purpose, behavior (idempotent), and return value. It is complete for practical use, though it omits potential error states.

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

    Parameters3/5

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

    No parameters exist, and schema coverage is 100%. Baseline is 3, and the description adds no parameter information because none is needed.

    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 action 'Disconnect from Mullvad VPN', using a specific verb and resource. It distinguishes itself from siblings like connect and get_status by the action of disconnecting.

    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 notes that the tool is idempotent, implying it can be safely called even when already disconnected. However, it does not explicitly contrast with alternatives like reconnect or get_status.

    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 discloses the return value format (dict with masked account number, expiry, device name), which is helpful. However, it does not mention any preconditions (e.g., being logged in) or side effects, leaving some behavioral gaps. With no annotations, more detail would be better.

    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 extremely concise: two sentences that state the purpose and return value. No wasted words, front-loaded with the verb 'Get'.

    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?

    Given the tool's simplicity (no parameters, no output schema in structured form), the description covers the essential: what it returns. It could mention whether it requires an active session, but overall it's adequate.

    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?

    There are zero parameters, so schema coverage is 100%. The description does not need to add parameter info. Baseline for 0 parameters is 4, and the description adds no redundancy.

    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 'Get Mullvad account information', which is a specific verb and resource. It naturally distinguishes from sibling tools like get_device_info and get_status, which cover different data.

    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?

    While no explicit when-to-use or when-not is given, the simplicity of the tool (no parameters, straightforward read operation) makes its usage obvious. No sibling tool overlaps in purpose, so guidance is not critical.

    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 explains the return format (dict with devices list of device names), which is the key behavioral output. Without annotations, the description sufficiently covers the read-only nature and expected result.

    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 extremely concise with two sentences: the first states the purpose, the second the return format. No unnecessary words, highly efficient.

    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?

    For a simple tool with no parameters and a clear output schema described, the description is complete. It lacks any mention of authentication or error handling, but these are not critical for such a basic tool.

    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 schema coverage is 100%. The description does not need to add parameter details, and the baseline score of 4 applies.

    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 it retrieves information about devices registered to a Mullvad account, specifying the resource and action. It distinguishes from siblings like get_account_info by focusing on devices.

    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?

    No explicit guidance on when to use this tool versus alternatives; usage is implied by the name and description. There are no exclusions or recommended contexts.

    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 clearly states the tool 'Disconnects and reconnects' and returns the current VPN status. With no annotations, this effectively communicates the mutation and outcome, though it lacks details on failure behavior.

    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 concise with a clear structure: brief intro, Args list with examples, and Returns. It is well-organized and front-loaded, though the Args section could be more succinct.

    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?

    Given the presence of an output schema, the description properly notes the return value. It covers the core behavior and parameters, but lacks details on error handling or constraints, which are not critical for a simple reconnect action.

    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 description provides concrete examples for each parameter (e.g., 'se', 'got', 'se-got-wg-004'), adding critical format context beyond the input schema's type-only definitions. This helps an agent use the parameters correctly despite 0% schema coverage.

    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 'Reconnect to Mullvad VPN' and explains that it disconnects and reconnects optionally to a new relay location. This directly distinguishes it from sibling tools like 'connect' and 'disconnect' which handle individual 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/5

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

    The description implies when to use this tool (to reconnect with optional location change) but does not explicitly contrast with alternatives like 'connect' or 'disconnect'. No guidance on when not to use it is provided.

    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?

    No annotations exist, so description carries full burden. It discloses that the tool returns a dict with specific fields (connection state, relay details, etc.), implying a read-only operation without side effects. This provides good transparency for a simple getter.

    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 with no wasted words. The purpose is front-loaded, and the return details are listed clearly. Every sentence adds value.

    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 0-parameter getter, the description completely explains the tool's purpose and output. There is no output schema provided, but the description lists the return fields, making it self-sufficient.

    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 no parameters, so the description needs no parameter details. The schema coverage is 100% (empty schema), and the description does not repeat any param info. Baseline 4 applies.

    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 it gets the current Mullvad VPN connection status. It uses a specific verb ('Get') and resource ('connection status'), and distinguishes itself from sibling tools like 'get_settings' or 'get_account_info'.

    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?

    No explicit guidance on when to use this tool versus alternatives. The description implies it's for checking current connection status, but does not mention when not to use it or suggest alternative tools for related tasks.

    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?

    With no annotations, the description fully explains the core effect (blocks traffic) and the return value. Does not cover potential side effects like persistence or permissions, but the key behavioral trait is disclosed.

    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?

    Three sentences plus structured Args/Returns. Front-loaded with purpose, then logical explanation, and specific parameter info. Every sentence adds value with no redundancy.

    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?

    For a simple toggle tool, the description covers the effect, parameter, and return. Could mention prerequisites (e.g., VPN connection state) or idempotency, but the presence of an output schema reduces the need for full return specification.

    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 description explicitly explains the single parameter 'enabled' with True/False mapping, compensating for the schema's 0% coverage. Adds meaning beyond the schema's type-only specification.

    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?

    Clearly states the verb 'Enable or disable' and the specific resource 'kill switch (lockdown mode)'. Unique among siblings, leaving no ambiguity about its function.

    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?

    Provides context by explaining the effect of enabling (blocks all traffic unless VPN connected) but lacks explicit guidance on when to use versus alternatives like connect/disconnect or set_daita. No exclusions or prerequisites mentioned.

    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?

    With no annotations provided, the description carries full burden. It discloses the return format (dict with 'servers' key, each server dictionary structure) and implies a read-only operation. It does not mention side effects, authentication, or rate limits, but for a list operation, this is largely sufficient.

    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 uses a clear docstring style with Args and Returns sections, is concise (no redundant information), and every sentence adds value. It is front-loaded with the main purpose.

    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 list tool with 3 parameters, an output schema exists, and the description includes return format. It covers filters, constraints, and output structure without missing essential details like pagination or rate limits (which are likely not needed for this simple list).

    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 coverage is 0%, so the description must compensate. It explains all three parameters (country, city, owned_only) with examples and adds a critical constraint (city requires country), providing semantics the schema lacks.

    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 explicitly states 'List available Mullvad VPN servers with optional filters,' clearly identifying the verb (list), resource (servers), and context (Mullvad VPN). It distinguishes from siblings like list_cities and list_countries by focusing on servers with detailed fields.

    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?

    The description provides parameter constraints (city requires country) but lacks explicit guidance on when to use this tool vs. alternatives such as connect, get_status, or list_cities. No when-not-to-use or comparative advice is given.

    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?

    Describes return format in detail (Dict with cities, each with name, code, coordinates, server_count). No annotations, but description covers behavior adequately for a read-only list tool.

    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?

    Extremely concise: one sentence plus structured Args/Returns. Every sentence adds value 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?

    Fully complete for a simple list tool: input parameter fully explained, output format described, and sibling context clarifies scope. No gaps.

    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?

    Schema has 0% description coverage, but description adds meaning by specifying 'Two-letter country code' with examples (e.g., 'se', 'us', 'de'), adding significant value beyond schema.

    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?

    Description explicitly states 'List available cities for a given country', which clearly defines the verb and resource. It distinguishes from siblings like list_countries and list_servers.

    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?

    Specifies input as two-letter country code, but does not provide explicit 'when to use vs alternatives' guidance. Context from sibling tools makes it clear, but no explicit exclusions.

    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?

    No annotations provided, so the description fully carries the burden. It explains the query to am.i.mullvad.net, describes the return dict including the leak_detected boolean, and implies a network request.

    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 compact paragraphs with clear structure: first sentence defines purpose, then explains query, then lists return fields. 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?

    With no parameters and an output schema, the description fully covers the tool's behavior and output. No additional information needed.

    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?

    No parameters exist, so baseline is 4. The description adds meaning beyond the schema by explaining the tool's function and return values.

    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 checks if the connection is protected by Mullvad VPN by querying am.i.mullvad.net. It is distinct from sibling tools like get_status or connect.

    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?

    Explicitly says 'Use this to confirm the VPN is working correctly,' providing a clear context. No exclusion or alternative guidance, but the purpose is well-defined.

    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

mullvad-mcp MCP server

Copy to your README.md:

Score Badge

mullvad-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/oresam-xyz/mullvad-mcp'

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