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 addresses a distinct resource/action: jurisdiction resolution, parcel lookup, zoning lookup, boundary geometry, and legal code text. The only potential overlap is between find_parcel and find_zoning, but their outputs are clearly different.

    Naming Consistency5/5

    All tools follow a prefix.verb_noun pattern with consistent snake_case: registry.resolve_jurisdiction, geo.find_zoning, geo.find_parcel, geo.find_boundaries, civic.get_code_section. The domain prefixes make grouping and purpose predictable.

    Tool Count5/5

    With 5 tools, the server is well-scoped for the Virginia civic/geographic domain. Each tool fills a distinct role, and the set is neither bloated nor too sparse.

    Completeness4/5

    The set covers the core read-only workflows: resolve a jurisdiction, get boundaries, find a parcel, get zoning, and retrieve a code section. However, there is no full-text search for code sections and no geocoding for street addresses, so agents must already know section numbers or accept coordinates/PINs. These are explicitly out of scope but still limit the surface.

  • Average 4.9/5 across 5 of 5 tools scored.

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

    • No community issues in the last 6 months
    • 8 commits in the last 12 weeks
    • No stable releases found
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI is passing
  • This repository is licensed under Apache 2.0.

  • This repository includes a README.md file.

  • No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.

    Tip: use the "Try in Browser" feature on the server page to seed initial usage.

  • Add a glama.json file to provide metadata about your server.

  • If you are the author, simply .

    If the server belongs to an organization, first add glama.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

  • Behavior5/5

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

    The annotations already declare readOnlyHint and openWorldHint, but the description adds material behavioral context beyond them: results carry provenance and coverage, an empty result with coverage.registry='none' means no source rather than no parcel, and jurisdiction-resolution ambiguity is handled internally. This is exactly the kind of operational nuance an agent needs to interpret results correctly.

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

    Conciseness5/5

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

    The description is compact yet dense; every sentence serves a purpose. The core action is front-loaded, followed by critical operational guidance, and no words are wasted on restating schema fields or repeating annotations.

    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 two query modes, jurisdiction-resolution semantics, candidate disambiguation, provenance/coverage concerns, and an open-world empty-result case, the description covers essentially all behavioral requirements. The output schema covers return shape, so the description only needs to explain semantics, which it does thoroughly.

    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 schema description coverage at 0%, the description compensates by explicitly naming the PIN, the lon/lat point, and the jurisdiction string, and by explaining how jurisdiction should be passed ('as given'). It adds meaning beyond the bare schema, though it does not fully detail parameter constraints such as coordinate format or whether pin and lon/lat are mutually exclusive beyond the 'or' phrasing.

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

    Purpose5/5

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

    The description opens with a specific verb and resource: 'Find parcel records in a Virginia jurisdiction by parcel PIN or by a lon/lat point.' It also scopes the geographic domain and identifies the two supported query modes, making the purpose unambiguous and naturally distinct from sibling tools like geo.find_zoning or geo.find_boundaries.

    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?

    It clearly instructs the agent to pass the user's jurisdiction string as given and states that resolution/ambiguities are handled inside the tool, which also implies not to pre-resolve via registry.resolve_jurisdiction. It gives a useful exclusion ('Not for street addresses yet') and a handling rule ('candidate lists must go back to the user unchosen'). It does not explicitly name the zoning/boundaries siblings as alternatives for other query types, so it stops short of full alternative mapping.

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

  • Behavior5/5

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

    Beyond the readOnlyHint and openWorldHint annotations, the description discloses that geometry is generalized, the publisher disclaims survey use, and it must never be used to decide which side of a boundary an address sits on. It also explains the independent-city behavior, which is a suprising edge case.

    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 dense but every sentence earns its place: function, usage context, edge case, geomery caveat, parameter guidance, and sibling distinction. Key constraints are front-loaded, and the warning about surveying is prominent.

    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?

    The output schema presumably documents return fields, so the description focuses on what is not elsewhere specified: when to use the tool, how the geometry behaves, independent-city behavior, and the detail parameter. For an agent selecting and invoking this tool, all necessary context is present.

    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 that detail='full' requests vertices and by framing jurisdiction as a Virginia jurisdiction whose territory is returned as separate for independent cities. It does not specify the jurisdiction value format, but the parameter semantics are meaningfully clarified.

    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 has a specific verb and resource: 'Get a Virginia jurisdiction's official boundary,' and lists concrete return contents (FIPS, GNIS, area, jurisdiction type, bounding box, centroid). It also distinguishes itself from sibling registry.resolve_jurisdiction by explicitly stating it is not a containment test.

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

    Usage Guidelines5/5

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

    It states exactly when to use this tool ('confirm WHICH government's territory is meant and how big it is') and when not to use it ('Not a containment test... use registry.resolve_jurisdiction'). This gives clear routing guidance against the sibling tool.

    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?

    Goes beyond the readOnly/openWorld/destructive annotations by explaining that the tool reports the GIS layer's answer, requires repeating a screening_only warning, and queries both registered official sources while showing disagreements rather than reconciling them. These are meaningful behavioral traits not present in the structured metadata.

    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 with the main purpose, followed immediately by the key caveats and sibling routing. There is no filler or repetition of schema/annotation information.

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

    Completeness5/5

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

    The description is complete for a read-only screening tool: it covers input modes, jurisdiction scope, legal caveat, dual-source behavior, and a sibling alternative. Since an output schema exists, the description does not need to document return fields.

    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 carries the burden of explaining parameters. It clarifies the two locator modes ('parcel PIN or lon/lat point') and the jurisdiction scope, but it does not explicitly state the at-least-one-of pin/lat/lon requirement or coordinate format details.

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

    Purpose5/5

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

    Uses a specific verb and resource: 'Find the zoning district(s) for a parcel PIN or lon/lat point in a Virginia jurisdiction.' It clearly distinguishes itself from siblings by stating it answers zoning screening questions, not parcel-record lookups or legal determinations.

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

    Usage Guidelines5/5

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

    Provides explicit usage context: use it for zoning screening only, and names an alternative with a routing condition: 'Use geo.find_parcel first when you need the parcel record itself.' It also tells the agent the result is never a legal determination, covering a when-not-to-rely case.

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

  • Behavior5/5

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

    Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds meaningful behavioral detail: results carry citation history exactly as published, include a link to the live page, and missing sections return found=False rather than an error. This sets accurate expectations beyond the structured annotations. No contradiction exists.

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

    Conciseness5/5

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

    The description is three sentences with no filler. The primary action is front-loaded, followed by critical lookup limitations, then result behavior. Every sentence earns its place and the length is appropriate for the tool's simplicity.

    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?

    The description fully equips an agent to call the tool correctly: a clear purpose, citation format examples, a lookup-only warning, and missing-section behavior. An output schema exists, so return value structure does not need to be repeated. Nothing necessary for correct invocation is omitted.

    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?

    With 0% schema description coverage, the description carries the full burden of explaining the single 'citation' parameter. It provides concrete examples ('1-500', '18.2-57') and clarifies that the value is a Code of Virginia section citation. This adds substantial 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 opens with a clear verb and resource: 'Get the text of a Code of Virginia section by its citation.' It further distinguishes itself from full-text search by stating 'Direct lookup only,' which separates it from any search-style sibling. The sibling tools are in different domains (jurisdiction, zoning, parcels), so no ambiguity remains about what this tool does.

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

    Usage Guidelines5/5

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

    The description explicitly states when to use the tool: the caller must already know or have found the section number. It also gives an explicit exclusion: 'this is not a full-text search.' This is actionable guidance that prevents misuse without requiring inference.

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

  • Behavior5/5

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

    Annotations already declare readOnly, openWorld, and non-destructive hints; the description adds substantial behavioral context beyond those hints. It explains point-in-polygon resolution, Virginia's independent-city versus county quirk, layered authorities that can apply simultaneously, and the requirement to surface requires_user_choice candidates rather than silently picking one. It does not contradict the annotations.

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

    Conciseness5/5

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

    The description is front-loaded with the core action and immediately follows with essential context about Virginia's jurisdictional quirks. Every sentence earns its place: input modes, the crucial XOR constraint, user-choice handling, and the no-geocoding limitation. It is dense but structured and avoids filler.

    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 no required parameters, an output schema present, and complex jurisdictional semantics, the description is remarkably complete. It covers input modes, geographic pitfalls, layered authorities, user-decision handling, and the known limitation about street addresses. Nothing an agent needs to invoke it correctly is missing.

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

    Parameters5/5

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

    Schema description coverage is 0%, so the description must carry the full semantic burden. It does: query is explained as a name, alias, or FIPS code; lat and lon are tied to coordinate-based point-in-polygon resolution; and the mutual exclusivity of query versus lat/lon is made explicit. This adds meaning far beyond the bare schema properties.

    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 states a precise verb and resource: resolve a Virginia jurisdiction from a name, alias, FIPS code, or lon/lat point. It also differentiates from sibling tools by noting this is the tool to use FIRST when a place or coordinate is given, and by explicitly excluding street addresses, which distinguishes it from potential geocoding or boundary tools.

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

    Usage Guidelines5/5

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

    The description gives explicit when-to-use guidance: use it whenever a place is named or a coordinate is given. It also provides clear exclusions (not for street addresses), a critical input rule (query OR lon/lat, never both), and a decisive handling instruction for requires_user_choice candidates, leaving no ambiguity about how to proceed.

    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

Commonwealth-MCP MCP server

Copy to your README.md:

Score Badge

Commonwealth-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/pranava0x0/Commonwealth-MCP'

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