Skip to main content
Glama
clevertechca

CleverTech MCP Server

Official
by clevertechca

Clevertech MCP Server

Canadian government and municipal open data for AI agents. Property assessments, building permits, zoning, business registry, DLS grid conversion, and more.

uvx clevertech-mcp-server

Requires a Clevertech API key (CLEVERTECH_API_KEY). Free tier: 50 API calls/day after sign-in at clevertech.ca/keys.

PyPI version License: MIT


Quick Start

  1. Create an API key: https://clevertech.ca/keys

  2. Set CLEVERTECH_API_KEY in your MCP client config (examples below)

  3. Run uvx clevertech-mcp-server

Product overview: https://clevertech.ca/agents

Cursor / Claude / Copilot (MCP config)

{
  "mcpServers": {
    "clevertech": {
      "command": "uvx",
      "args": ["clevertech-mcp-server"],
      "env": {
        "CLEVERTECH_API_KEY": "${env:CLEVERTECH_API_KEY}"
      }
    }
  }
}

Or paste your key directly as the CLEVERTECH_API_KEY string value.

Direct CLI

export CLEVERTECH_API_KEY=your_key_here
uvx clevertech-mcp-server

Related MCP server: DataEdmonton MCP

Available Tools

Tool

Description

dls_convert

GPS ↔ Dominion Land Survey (DLS) for Western Canada

dls_batch

Batch GPS ↔ DLS (up to 100 coordinates)

property_search

Property assessment search by address

property_report

Consolidated property report

property_by_roll

Lookup by roll number

building_permit_search

Building permits by address, contractor, applicant, or number

building_permit_recent

Recently issued permits feed

zoning_lookup

Zoning by GPS or address

business_registry_search

Federal corporation search

reverse_geocode

GPS → address, city, neighborhood, province, DLS

list_cities

Cities, capabilities, and property counts

Use list_cities for live coverage. Cities span Alberta, BC, Ontario, Quebec, Manitoba, Saskatchewan, Nova Scotia, Newfoundland, and more.


Pricing (CAD)

Site is the source of truth: clevertech.ca/agents

Tier

What you get

Price

Free

50 API calls/day after sign-in

$0

Prepaid

Pay-as-you-go prepaid credit

$29

Developer

Higher limits for builders

$149

Team Pro

Team / higher tier

$499

Get a key: https://clevertech.ca/keys


Features

  • MCP stdio server for Cursor, Claude, Copilot, and other MCP clients

  • Canadian municipal / government open-data tools for agents

  • PyPI package: clevertech-mcp-server

  • MIT licensed


Development

git clone https://github.com/clevertechca/Clevertech-mcp-server.git
cd Clevertech-mcp-server
uv sync
export CLEVERTECH_API_KEY=your_key_here
uv run clevertech-mcp-server
uv run pytest

Documentation


License

MIT © Clevertech — see LICENSE for details.

Available Tools

12 tools
building_permit_recentA

Get the most recently issued building permits for a city. Useful for monitoring new construction activity.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYes
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description must carry the behavioral disclosure burden. It does indicate the core behavior: returning recently issued permits, implying recency-based ordering and city scoping. However, it does not clarify what 'recent' means, how limit interacts with results, or whether there is pagination, so behavioral transparency is only partially addressed.

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

Conciseness5/5

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

Two short sentences with no filler. The core action and resource are front-loaded, and the use case is stated in a single efficient phrase. Every word earns its place.

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

Completeness3/5

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

For a simple two-parameter, single-required-parameter tool with an output schema, the description covers the essential operation and purpose. However, it omits limit semantics, does not differentiate from building_permit_search beyond 'recent,' and lacks any guidance about valid city values. These are notable but not critical gaps for a straightforward list tool.

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%, so the description needs to compensate by explaining both parameters. It loosely ties 'city' to the 'for a city' scope, but it says nothing about the 'limit' parameter, its default of 20, or its effect on the returned list. This leaves a meaningful semantic gap.

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

Purpose5/5

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

The description clearly states a specific verb and resource: 'Get the most recently issued building permits for a city.' The 'recent' qualifier distinguishes it from the sibling building_permit_search, making its unique role immediately clear without needing to inspect the schema.

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 phrase 'Useful for monitoring new construction activity' gives a clear intended-use context. However, it does not explicitly mention building_permit_search as an alternative or state when this tool should not be used, leaving some routing nuance to the agent.

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

dls_batchA

Convert multiple GPS coordinates to DLS or multiple DLS strings to GPS in a single batch request. Up to 100 items per batch.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes
provinceNo
directionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral disclosure burden. It discloses the dual conversion direction and the 'Up to 100 items per batch' limit. But it does not explain behavior for invalid items, mixed input, province handling, or failure modes, leaving important behavior undocumented.

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 focused sentence followed by the key batch constraint. Every clause earns its place, and the most important scoping information is front-loaded.

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 an output schema exists and return-value documentation is not needed, the input side is under-specified for a 3-parameter tool. An agent cannot reliably know what string to pass for 'direction' or what each item object should contain. The 100-item limit and batch intent help, but the missing semantic details leave the description incomplete.

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%, so the description must compensate. It offers a general sense that 'items' hold coordinates or DLS strings and that direction selects the conversion mode, but it never defines accepted direction values, the item object shape, or the role of 'province'. The description only partially compensates for the missing parameter documentation.

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 names a specific verb ('Convert'), a clear resource (GPS coordinates / DLS strings), and a well-defined scope: multiple conversions in a single batch. It implicitly differentiates from the sibling dls_convert by emphasizing batch and up-to-100-items behavior.

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 the tool is for batch conversions rather than single conversions, and it states the 100-item batch ceiling. However, it does not explicitly say when to prefer this over dls_convert or other sibling tools, nor does it mention any exclusions or fallback conditions.

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

dls_convertC

Convert between GPS coordinates and Dominion Land Survey (DLS) grid system used in Western Canada. Supports GPS→DLS and DLS→GPS directions.

ParametersJSON Schema
NameRequiredDescriptionDefault
latNo
lonNo
provinceNo
directionYes
dls_stringNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only states that conversion is bidirectional, omitting coordinate datum, DLS string format, supported provinces, validation behavior, or error handling. The description is not misleading, but it is far too minimal for a geo-conversion 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 two short sentences with no filler, front-loading the primary action and scope. The second sentence adds directional capability without repeating the first. It is an appropriately sized definition, even though it lacks operational detail.

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?

This is a two-way converter with conditional inputs, province qualifiers, and five parameters, yet the description does not explain how to construct a valid call. Critical information such as required parameters per direction and supported DLS formats is missing. The presence of an output schema does not fill these invocation gaps.

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 how direction maps to lat/lon versus dls_string, nor does it clarify the role of province. The phrase 'GPS→DLS and DLS→GPS' implies the two modes, but the exact required parameters and accepted direction values remain undocumented. With five parameters, this is a significant gap.

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

Purpose4/5

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

The description clearly states the tool converts between GPS coordinates and the DLS grid system and names both supported directions. The Western Canada scope adds useful precision. However, it does not explicitly distinguish itself from the sibling dls_batch tool, so it stops just short of full 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?

No guidance is given on when to use this tool versus dls_batch or reverse_geocode, and no exclusions are mentioned. The direction support is helpful but does not tell the agent how to choose between modes or which inputs are needed for each direction. This is a capability statement, not usage guidance.

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

list_citiesA

List all available cities with their slugs, API capabilities, and property counts. Use this first to discover which cities are available and what services each supports.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It clearly conveys that the tool lists all cities and describes the returned data categories. Since the tool has no parameters and is inherently read-only, this level of transparency is 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 is two sentences with zero redundancy. The primary purpose is stated first, followed by the intended usage, making it easy for an agent to scan and act on.

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

Completeness5/5

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

For a zero-parameter discovery endpoint with an output schema, the description fully covers what the agent needs: what will be returned, why to call it, and when to call it. Nothing essential is 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 tool has zero parameters, so no parameter documentation is needed. The baseline of 4 applies because there is nothing for the description to add beyond the schema, and the description appropriately focuses on the output semantics instead.

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 specific verb ('List'), a clear resource ('all available cities'), and the key output fields ('slugs, API capabilities, and property counts'). This makes the tool's purpose immediately distinguishable from the sibling property and permit search tools.

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 explicitly instructs to use this tool first to discover available cities and their supported services. It clearly communicates the discovery-oriented context, though it does not enumerate exclusion scenarios or name specific alternative tools.

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

property_by_rollA

Get a single property assessment record by its roll number. Faster than search when you already know the roll number.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYes
roll_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description is the only source of behavioral context; it discloses that the result is a single record and makes a performance claim ('faster than search'). It doesn't address error/not-found behavior or authentication, though the output schema covers the success shape.

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 sentences, no filler, and the main purpose is front-loaded. Efficient.

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?

For a simple lookup with an output schema, the essentials are present, but the role of the required city parameter is unexplained and could mislead an agent into thinking roll numbers are globally unique. The sibling landscape reinforces search-vs-lookup, which helps, but the city gap keeps it from being fully complete.

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 the description needed to clarify both city and roll_number. It only says roll number, implying the lookup is purely by roll number while city is also required, leaving the agent with an incomplete mental model.

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?

States a specific action ('Get') on a specific resource ('a single property assessment record') keyed by roll number. Distinguishes itself from property_search by noting it's faster when the roll number is already known.

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 tells the agent to use this when the roll number is already known and pitches it as faster than search. It doesn't list exclusions or compare against property_report/property_top, but the main alternative is clear.

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

property_reportA

Get a consolidated property report — assessment data, building permits at this address, zoning information, and DLS coordinates in a single response.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYes
roll_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations present, the description carries the entire behavioral burden. It discloses the content returned, which is helpful, but it does not state whether the tool is strictly read-only, how it behaves if data is missing for a section, or any latency or error traits. The description is adequate but not richly transparent.

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 one compact, front-loaded sentence that uses an em-dash list to communicate the tool's scope efficiently. Every phrase earns its place and there is no filler.

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 tool has an output schema and a moderate parameter set, so the description does not need to explain return structure. However, it leaves parameter semantics and usage boundaries to inference, and with no annotations the overall context is a bit thin for a tool that aggregates multiple data sources.

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?

The schema has 0% description coverage for its two required parameters, and the tool description does not compensate. It mentions 'this address' and 'DLS coordinates,' which implies city and roll_number identify the property, but it never defines what a roll_number is, its expected format, or how city relates to it. An agent would need external knowledge to invoke it correctly.

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 names a specific verb ('Get'), a resource ('consolidated property report'), and lists the distinct data domains it combines: assessment data, building permits, zoning information, and DLS coordinates. This clearly differentiates it from narrower siblings like building_permit_search or zoning_lookup.

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 phrase 'consolidated property report' and 'in a single response' signals when this tool should be chosen instead of making separate calls. It does not explicitly name alternative tools or state when not to use it, so it stops just short of full guidance.

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

property_topA

Get the top-N properties in a city sorted by assessed value, year built, or lot size. Perfect for finding the most expensive, oldest, or largest properties. Returns full assessment details for each result.

ParametersJSON Schema
NameRequiredDescriptionDefault
nNo
cityYes
orderNodesc
sort_byNoassessed_value
max_valueNo
min_valueNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

There are no annotations, so the description carries the burden. It discloses return behavior ('Returns full assessment details for each result') and ranking semantics, but it does not explicitly state read-only safety, how min/max_value affect results, or edge-case behavior. Core behavior is transparent, but operational nuance is missing.

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 brief sentences with no filler. The first sentence front-loads the action and scope, the second provides the use case and return value. Every sentence earns its place.

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

Completeness3/5

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

The description is adequate for the basic query case, and the output schema covers return details. However, with no annotations and six parameters, the meaning of min_value, max_value, and order is left to inference, so the description is not fully complete for correct invocation in all intended uses.

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%, so the description must compensate. It explains sort_by options ('assessed value, year built, or lot size') and implies city and n through 'top-N in a city,' but it leaves order, min_value, and max_value undefined. With six parameters and no schema descriptions, this is a significant gap.

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 specific action ('Get'), a specific resource ('top-N properties in a city'), and explicit sort dimensions ('assessed value, year built, or lot size'). It clearly reads as a ranking/list tool and is easily distinguished from the sibling search and report tools.

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 gives clear use-case context: 'Perfect for finding the most expensive, oldest, or largest properties.' It does not explicitly name alternatives or say when not to use this tool, but the purpose is concrete enough for an agent to route correctly.

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

reverse_geocodeA

Convert GPS coordinates to a human-readable address, city, neighborhood, province, DLS grid reference, and — when available — the nearest property's roll number and assessed value. Works across all Canadian cities in the CleverTech database.

ParametersJSON Schema
NameRequiredDescriptionDefault
latYes
lonYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description bears the full burden of behavioral disclosure. It transparently notes that property data is returned 'when available' and lists the categories of output, but it does not explain what happens when coordinates fall outside the database, how missing values are represented, or any precision/coordinate-system assumptions.

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, tightly packed sentence that front-loads the main action and output types. Every clause adds useful information—scope, fallback caveat, and specific returned data—with no filler.

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 two-parameter geocoding tool with an output schema available, the description covers the essential behavior, outputs, geographic scope, and the conditional property data. It falls just short of complete because it omits handling of out-of-scope coordinates and coordinate-system assumptions.

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?

Schema description coverage is 0%, so the description must compensate for the schema's lack of parameter detail. It adds the meaning 'GPS coordinates' to the two numeric fields, but it does not clarify units, order, valid ranges, or coordinate system beyond what the bare field names 'lat' and 'lon' already imply.

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 ('Convert') and names a clear resource: GPS coordinates to a human-readable address plus specific extras like DLS grid reference and property roll number. It also defines geographic scope ('all Canadian cities'), which distinguishes it from sibling tools like property_search or dls_convert.

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 phrase 'Convert GPS coordinates to...' establishes the primary use case, and 'Works across all Canadian cities in the CleverTech database' gives a clear geographic context. It does not explicitly name alternative tools or exclusions, so it stops just short of a 5.

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

zoning_lookupA

Look up zoning district information for a GPS point or address in a Canadian city. Returns zone code, description, and district boundaries.

ParametersJSON Schema
NameRequiredDescriptionDefault
latNo
lonNo
cityYes
addressNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
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 for behavioral disclosure. It does state that the tool returns zone code, description, and district boundaries, which is helpful. However, it does not clarify that the caller must provide either coordinates or an address, or explain behavior when both or neither are supplied.

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 deliver the essential information without filler: what the tool does, the input options, the geographic scope, and the return content. Every clause earns its place and the core purpose is front-loaded.

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?

For a simple four-parameter lookup with an output schema, the description is fairly complete — it covers purpose, inputs, scope, and returns. The main gap is that it does not explicitly state the operational requirement to provide either a GPS point (lat/lon) or an address, which is important for correct invocation and not obvious from the schema since only city is required.

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?

With 0% schema description coverage, the description must compensate, and it does add some meaning by mapping 'GPS point' to lat/lon, 'address' to the address parameter, and 'Canadian city' to city. Still, it does not explain the relationship between parameters — such as whether city is required alongside coordinates or whether lat/lon must be provided together — leaving meaningful ambiguity.

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

Purpose5/5

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

The description clearly states a specific action ('Look up zoning district information'), the resource ('zoning district'), the input type ('GPS point or address'), and the geographic scope ('Canadian city'). It also lists concrete return values, making it easy to distinguish from sibling tools like property_search or reverse_geocode.

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 communicates clear usage context: use this when you need zoning district information for a geographic point or address in a Canadian city. However, it does not explicitly mention when not to use the tool or name alternative tools for related but different lookups, so it stops short of a full 5.

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

Tool Schema Changelog

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

  1. 12 tool updatesv0.2.0
    • First observedbuilding_permit_recent
    • First observedbuilding_permit_search
    • First observedbusiness_registry_search
    • First observeddls_batch
    • First observeddls_convert
    • First observedlist_cities
    • First observedproperty_by_roll
    • First observedproperty_report
    • First observedproperty_search
    • First observedproperty_top
    • First observedreverse_geocode
    • First observedzoning_lookup

TDQS

A3.7/5.0

Scored across 12 tools

Disambiguation4/5

Most tools are clearly separated by resource and action: property search, roll lookup, permits, zoning, and DLS conversion each have distinct purposes. The only mild overlap is between property_report and the individual permit/zoning lookups, and between reverse_geocode and dls_convert, but the descriptions clarify scope well enough to avoid real confusion.

Naming Consistency4/5

Tool names mostly follow a clear [domain]_[action] snake_case pattern like property_search, building_permit_search, and zoning_lookup. A few names like property_by_roll, property_top, and building_permit_recent deviate from the verb-oriented pattern, but the overall convention remains predictable and readable.

Tool Count5/5

Twelve tools is well-scoped for a real-estate and land-data server: property data, permits, zoning, DLS conversion, geocoding, and business registry search are each represented without redundant tools. Each tool serves a distinct workflow, and the count feels proportional to the domain.

Completeness5/5

The tool surface covers the advertised domain thoroughly: property discovery, detailed reports, roll-based lookup, top listings, DLS conversion in single and batch modes, permit search and recent activity, zoning lookup, reverse geocoding, and city discovery. No obvious dead ends or missing core operations are apparent for a read-only data API.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    MCP server giving AI agents structured access to Canadian federal, provincial, and municipal government data.
    5
    41 PyPI
    61
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to query Edmonton's open data portal via the Socrata SODA API. Part of the Pipeworx MCP gateway.
    24 npm
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to answer DFW civic and property questions using official data sources without API keys.
    9
    88 npm
    2
    Apache 2.0
  • A
    license
    Not graded
    quality
    F
    maintenance
    Provides access to Statistics Canada official statistics without authentication, enabling AI agents to query Canadian economic and demographic data.
    1 npm
    MIT