Skip to main content
Glama

Server Quality Checklist

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

  • Disambiguation5/5

    Each tool targets a distinct operation: discovery trigger, pending list, pending registration, pending dismissal, registered device list, device control, and device status. No two tools overlap in purpose, so an agent can easily select the correct tool for a given task.

    Naming Consistency4/5

    All tools share the 'lan_' prefix, providing a unified namespace. However, naming mixes verb-first (lan_discover) and noun-first (lan_device_register) patterns, and lan_device_status uses a noun instead of an action verb. These are minor deviations that don't severely impair readability.

    Tool Count5/5

    Seven tools is ideal for a local network device management server. The set covers discovery, the pending device workflow, and registered device operations without unnecessary redundancy, fitting comfortably within the 3-15 tool range.

    Completeness4/5

    The tool set covers the core lifecycle from discovery through pending approval and registration, plus device listing, control, and status retrieval. Notable gaps include no unregister/delete operation for registered devices and no update device details, but these are minor for a LAN management use case.

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

    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 status not available
  • 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

  • Behavior2/5

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

    With no annotations provided, the description carries full responsibility for disclosing behavior. It only says 'Send a command' and does not mention side effects, required permissions, execution semantics, or whether the command mutates device state.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness3/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is a single concise sentence with no redundancy, but it is under-specified. It would benefit from additional context while remaining brief.

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

    Completeness2/5

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

    Given three parameters, an output schema, and no annotations, the description is incomplete. It does not describe the command mechanism, expected output, or any prerequisites, leaving significant gaps for an agent to invoke the tool correctly.

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

    Parameters1/5

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

    The schema has 0% description coverage, and the description adds no meaning to the parameters (device_id, command, args). It fails to explain what 'command' means, what 'args' are for, or how device_id is used.

    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 states a clear verb ('Send') and resource ('a device'), indicating it sends commands to devices. However, it does not reference the LAN context or distinguish itself from sibling tools like lan_device_status, which could also involve device interactions.

    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 guidance on when to use this tool versus alternatives such as lan_device_status or lan_device_register. It lacks preconditions, exclusions, or context about device discovery/registration requirements.

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

  • Behavior1/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 simply states the action without disclosing side effects (e.g., device removed from pending list), prerequisites, permission requirements, or any state changes. This is a significant gap 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.

    Conciseness2/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is extremely short (7 words) and front-loaded, but it is under-specified to the point of being unhelpful. It is not 'appropriately sized' because it omits essential details, making this more a case of under-specification rather than effective conciseness.

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

    Completeness1/5

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

    This is a mutating operation with 4 parameters, no annotations, and only a one-sentence description. Even with an output schema present, the description fails to cover prerequisites, behavior, or parameter semantics. It is completely inadequate for an agent to select and invoke the tool correctly.

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

    Parameters1/5

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

    Schema description coverage is 0%, and the description provides no explanation of parameters such as pending_id, name, room, or adapter_type. With zero compensation from the description, the agent has no guidance beyond the parameter names themselves.

    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 'Promote' and identifies the resource 'pending device' and destination 'registry'. It clearly distinguishes from sibling tools like lan_pending_dismiss, lan_discover, and lan_device_list by implying the action of moving a device from pending to registered 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 implies when to use the tool (when a pending device should be registered), but it does not explicitly state alternatives or exclusions. Given sibling tools, it could have mentioned 'as opposed to dismissing' but this is not 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?

    With no annotations provided, the description carries the full burden of behavioral disclosure. The verb 'Get' implies a read operation, but the description does not explicitly confirm read-only behavior, side-effect freedom, or clarify what happens if the device is not found. It lacks any details on permissions, rate limits, or the nature of 'detailed status.'

    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 a single, front-loaded sentence with no filler or redundancy. It efficiently conveys the core action and resource, earning its place without unnecessary detail. This is a model of conciseness.

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

    Completeness2/5

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

    Although the tool has an output schema and only one parameter, the description omits essential usage context such as when to prefer this over lan_device_list, any preconditions (e.g., device must be discovered first), or what the 'detailed status' covers. It is insufficient for an agent to invoke correctly without supplementary guidance.

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

    Parameters1/5

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

    The input schema contains one parameter (device_id) with no description, and schema description coverage is 0%. The description fails to mention or explain device_id, its expected format, or how it relates to the status query, thus adding no value beyond the raw schema.

    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 identifies the action ('Get') and resource ('detailed current status of a device'), which aligns with the tool name and distinguishes it from sibling tools like lan_device_list or lan_device_control. However, it does not explicitly compare against siblings or clarify what 'detailed' entails, so it lacks definitive differentiation.

    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 provides no guidance on when to use this tool versus alternatives such as lan_device_list or lan_device_control. It neither states prerequisites, exclusions, nor typical scenarios, leaving the agent without contextual decision-making information.

    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 full responsibility for behavioral disclosure. While 'List' implies a read operation, the description does not state whether it returns all devices or only online ones, whether authentication is needed, or any side effects. It also does not clarify what 'current status' encompasses.

    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 a single, efficient sentence with no redundant words. It is front-loaded with the core action. However, the extreme brevity leaves out important context, so it earns a 4 rather than a 5.

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

    Completeness2/5

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

    The tool has four optional parameters, no annotations, and only a minimal description. The output schema exists but is not described; given the low complexity, the description should at least hint at filtering capabilities or typical output. It does not, leaving the tool under-specified for reliable invocation.

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

    Parameters1/5

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

    Schema coverage is 0% and the description does not mention any of the four parameters (filter_room, filter_type, online_only, filter_transport). There is zero information about accepted values, formats, or how filters interact, forcing the agent to guess.

    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 ('List') and resource ('registered devices') with an added scope ('current status'). This clearly distinguishes it from siblings like lan_discover (which scans for unregistered devices) and lan_device_status (which likely targets a single device).

    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 use this tool versus alternatives like lan_device_status, lan_discover, or lan_device_control. There are no exclusions, conditions, or example scenarios, leaving the agent to infer usage from the name alone.

    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 carries full burden. It only states the action and the effect of hiding, but does not disclose reversibility, permissions, side effects, or whether 'dismiss' causes deletion or just visibility change.

    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 a single, front-loaded sentence with no filler. Every word adds value, and it is appropriately sized for a simple one-parameter action.

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

    Completeness2/5

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

    Despite having an output schema, the tool's behavioral and input semantics are underspecified. The agent cannot determine how to obtain a valid pending_id or what the consequences of dismissal are beyond the minimal statement.

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

    Parameters1/5

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

    Schema coverage is 0% and the description does not mention pending_id at all. The agent is left to infer from the name alone, which is insufficient for a parameter that likely requires specific ID format or provenance.

    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 'dismiss' and resource 'pending device', and clarifies the effect with 'hide from pending list'. This clearly distinguishes it from siblings like lan_discover_pending (listing) and lan_device_register.

    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 on when to use this tool versus alternatives. The parenthetical 'hide from pending list' implies a use case but does not explicitly state context, prerequisites, or when not to use it.

    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?

    With no annotations, the description carries the burden of behavioral disclosure. The verb 'List' implies a read-only operation, but the description does not explicitly state that it makes no changes, nor does it mention any permissions or processing implications. It adds minimal context beyond the core action.

    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 a single, efficient sentence with no filler or redundant information. It is front-loaded with the key action ('List devices') and immediately scopes it ('awaiting manual registration'), making it optimally concise.

    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 output schema exists, so return values are covered. However, the description does not explain the filter_transport parameter, and the interaction with sibling tools (e.g., when pending devices become available for registration) is not addressed. For a simple list tool, it is minimally adequate but leaves gaps in parameter context and workflow integration.

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

    Parameters1/5

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

    The input schema has one parameter, filter_transport, with no description in the schema and 0% schema description coverage. The tool description does not mention this parameter at all, leaving its meaning and usage completely unexplained. The description fails to add any value for parameter 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 'List devices awaiting manual registration' uses a specific verb (List) and resource (devices awaiting manual registration), clearly distinguishing this from sibling tools like lan_discover or lan_device_list. The phrase 'awaiting manual registration' adds precision, making the tool's purpose unambiguous.

    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 use this tool versus alternatives. It does not mention lan_discover for listing all discovered devices or lan_pending_dismiss as related actions, leaving the agent to infer usage from the name alone.

    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?

    With no annotations, the description carries the burden of behavioral disclosure. It reveals that the tool performs simultaneous WiFi/LAN and Bluetooth scans and returns a discovery report with new, updated, and lost devices. However, it omits any mention of permissions, network impact, or other side effects, leaving some behavioral traits undisclosed.

    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 front-loaded: the first sentence states the primary purpose. The following two sentences add essential details about scanning behavior and output. No wasted words, and the structure is clear.

    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 presence of an output schema reduces the need to describe return values, and the description does mention key output characteristics. However, it lacks parameter guidance, prerequisites, and workflow context relative to sibling tools. For a tool with 3 undocumented params and no annotations, this level of completeness is only minimal.

    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 description does not explain the parameters (scan_type, network_range, timeout_seconds). It only indirectly hints that scanning covers 'WiFi/LAN and Bluetooth LE,' which may correspond to 'all' in scan_type, but it does not clarify parameter options or effects. This is a significant gap given the low 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 the tool discovers devices on the local network and Bluetooth, with a specific verb ('Discover') and resource ('devices on local network and Bluetooth'). It also differentiates from siblings like lan_device_list and lan_device_control by emphasizing the scanning and reporting of new/updated/lost devices.

    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 clear context: it scans WiFi/LAN and Bluetooth LE simultaneously, which implies appropriate scenarios for use. However, it does not explicitly mention when not to use this tool or name alternatives, so it stops short of full exclusion 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

iotforge MCP server

Copy to your README.md:

Score Badge

iotforge 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/ashlarforge/iotforge'

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