Skip to main content
Glama
clevertechca

CleverTech MCP Server

Official
by clevertechca

CleverTech MCP Server

Canadian government data for AI agents. Property assessments, building permits, zoning, business registry, DLS grid conversion — 50 free queries/day, no signup.

uvx clevertech-mcp-server

PyPI version License: MIT


Quick Start

Claude Code

Add to your ~/.claude/claude_desktop_config.json:

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

Cursor / Cline

Add to your MCP configuration:

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

GitHub Copilot

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

Direct CLI

uvx clevertech-mcp-server

Related MCP server: mcp-canada

Available Tools (12)

Tool

Description

dls_convert

GPS ↔ Dominion Land Survey (DLS) coordinate conversion for Western Canada

dls_batch

Batch GPS ↔ DLS conversion — up to 100 coordinates at once

property_search

Property assessment search by address across 13+ Canadian cities

property_report

Consolidated property report — assessment, permits, zoning, and DLS in one call

property_by_roll

Direct property lookup by roll number — faster than address search

building_permit_search

Building permit search by address, contractor, applicant, or permit number

building_permit_recent

Recently issued building permits feed — monitor new construction activity

zoning_lookup

Zoning district lookup by GPS coordinates or street address

business_registry_search

Federal corporation search — find Canadian businesses by name, province, or city

reverse_geocode

GPS → address, city, neighborhood, province, and DLS grid reference

list_cities

Discover available cities, their API capabilities, and property counts

What Agents Can Do

  • Ask: "What's 1532 14 Ave SW in Calgary worth?" — Gets assessed value, land value, building value, year built, lot size, and DLS coordinates.

  • Ask: "Show me recent building permits in Vancouver" — Returns the latest construction permits with type, value, status, and issue dates.

  • Ask: "What zone is this GPS point in?" — Looks up zoning district, land use, and boundary info.

  • Ask: "Convert these 50 GPS points to DLS" — Batch converts in a single API call.

  • Ask: "Is Shopify still an active corporation?" — Searches the federal business registry.


Cities Supported

20 cities across Canada — and growing:

Province

Cities

Alberta

Calgary, Edmonton, High River

British Columbia

Vancouver, Victoria

Ontario

Toronto, Ottawa, Hamilton, Kitchener, London, Mississauga, Markham, Vaughan

Quebec

Montreal, Quebec City

Manitoba

Winnipeg

Saskatchewan

Saskatoon, Regina

Nova Scotia

Halifax

Newfoundland

St. John's

Use list_cities to see live availability, API capabilities per city, and property counts.


Pricing

No signup required to start. Free tier gives you 50 queries/day out of the box.

Tier

Queries/Day

Price

API Key

Free

50

$0

Not required

Developer

200

Free

Sign up →

Pro

2,000

$10/mo

Sign up →

Enterprise

10,000

$40/mo

Sign up →

Get your API key →

Using an API Key

Set the CLEVERTECH_API_KEY environment variable (recommended):

export CLEVERTECH_API_KEY=your_key_here
uvx clevertech-mcp-server

Or pass it as a CLI flag:

uvx clevertech-mcp-server --api-key YOUR_KEY

To get a new key, use device login:

uvx clevertech-mcp-server --login

This opens a browser for Google sign-in, then prints your API key with instructions for setting the environment variable (RFC 8628 device flow). The key is not saved to disk — you configure it in your MCP client.


Features

  • No signup required — 50 free queries/day out of the box

  • 12 MCP tools covering property, permits, zoning, business registry, and DLS

  • Batch DLS conversion — convert up to 100 coordinates in one call

  • Consolidated property reports — assessment + permits + zoning + DLS in a single response

  • stdio transport — works with Claude Code, Cursor, Cline, GitHub Copilot, and any MCP-compatible agent

  • Clean text output — formatted for easy LLM parsing and reformatting

  • 20 Canadian cities — urban and rural coverage with regular additions

  • MIT licensed — use it anywhere, no restrictions


Development

# Clone and set up
git clone https://github.com/clevertechca/Clevertech-mcp-server.git
cd Clevertech-mcp-server
uv sync

# Run locally (stdio transport)
uv run clevertech-mcp-server

# Run with --login to get an API key
uv run clevertech-mcp-server --login

# Run with SSE transport (for HTTP-based agents)
uv run clevertech-mcp-server --transport sse --port 8000

Run Tests

uv run pytest

Project Structure

src/clevertech_mcp/
├── tools/
│   ├── property.py    # property_search, property_report, property_by_roll
│   ├── building.py    # building_permit_search, building_permit_recent
│   ├── zoning.py      # zoning_lookup
│   ├── dls.py         # dls_convert, dls_batch
│   ├── business.py    # business_registry_search
│   ├── geo.py         # reverse_geocode
│   └── meta.py        # list_cities
├── server.py          # FastMCP server entry point
├── client.py          # HTTP client for CleverTech API
├── auth.py            # API key authentication
├── rate_limit.py      # Rate limiting
└── config.py          # Configuration management

Documentation


License

MIT © 2026 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. Dates show when Glama detected each change.

  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
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

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

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/clevertechca/Clevertech-mcp-server'

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