Skip to main content
Glama

@cargoffer/zbe-mcp

MCP (Model Context Protocol) server for checking vehicle routes against Low Emission Zones (ZBE/LEZ) in Spain and Portugal.

Quick Start

npx @cargoffer/zbe-mcp

Related MCP server: openroute-mcp

Tools

Tool

Description

zbe.checkRoute

Check if a vehicle route intersects ZBE polygons

zbe.listPolygons

List ZBE polygons with optional filters

zbe.getStats

Get coverage statistics

zbe.getBadgeInfo

Get info about DGT environmental badges

zbe.getVehicleRestrictions

Get vehicle access rules for a specific city

Configuration

Environment Variable

Default

Description

ZBE_API_URL

https://zbe.transcend.cargoffer.com/api

ZBE API base URL

ZBE_API_KEY

(none)

API key for authentication

Claude Desktop Config

{
  "mcpServers": {
    "zbe": {
      "command": "npx",
      "args": ["@cargoffer/zbe-mcp"],
      "env": {
        "ZBE_API_KEY": "your-api-key"
      }
    }
  }
}

SDKs

TypeScript: @cargoffer/zbe-sdk

import { ZbeClient } from '@cargoffer/zbe-sdk';
const client = new ZbeClient({ apiKey: 'YOUR_KEY' });
const result = await client.checkRoute({...});

Python: cargoffer-zbe

from zbe_client import ZbeClient
client = ZbeClient(api_key="YOUR_KEY")
result = await client.check_route(route=[...], vehicle={...})

Available Tools

5 tools
zbe.checkRouteA

Check if a vehicle route intersects Low Emission Zones (ZBE/LEZ) in Spain/Portugal. Use this when you need to know if a truck route passes through restricted urban areas. The API compares the vehicle's Euro emission class with each ZBE's minimum requirement. Returns which ZBEs are intersected and whether the vehicle is restricted from entering.

ParametersJSON Schema
NameRequiredDescriptionDefault
routeYesRoute GPS points as [{lat, lon}, ...]
vehicleYesVehicle specifications

TDQS

A4.4/5.0
Behavior4/5

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

Without annotations, the description explains the core behavior: 'The API compares the vehicle's Euro emission class with each ZBE's minimum requirement. Returns which ZBEs are intersected and whether the vehicle is restricted from entering.' This adds useful context beyond the input schema, though it could mention error handling or rate limits.

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 composed of four efficient sentences: purpose, usage guidance, behavior, and return value. No redundant information; every sentence adds value.

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

Completeness4/5

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

Given no output schema, the description provides a high-level summary of returns ('which ZBEs are intersected and whether the vehicle is restricted'). It covers the essential aspects of the tool's functionality, though a bit more detail on the output structure would improve completeness.

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

Parameters4/5

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

The input schema has 100% description coverage, so the baseline is 3. The description enhances meaning by explaining how the euroClass is used in comparison with ZBE requirements, and implies that weight and fuelType are relevant for the route check. This gives agents a better understanding of parameter roles.

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

Purpose5/5

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

The description clearly states the verb 'check' and resource 'vehicle route intersects Low Emission Zones (ZBE/LEZ)', with explicit geographic scope 'Spain/Portugal'. It is distinct from sibling tools like zbe.getBadgeInfo or zbe.listPolygons, which focus on different aspects.

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?

Provides clear guidance: 'Use this when you need to know if a truck route passes through restricted urban areas.' While it does not explicitly list alternatives, the context is specific enough to differentiate from siblings.

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

zbe.getBadgeInfoA

Get information about DGT environmental badges (Distintivo Ambiental). Explains what each badge means, which vehicles qualify, and restrictions for each badge type.

ParametersJSON Schema
NameRequiredDescriptionDefault
badgeNoSpecific badge to look up (omit for all)

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 burden of disclosure. It indicates a read-only information retrieval operation with no side effects. No mention of authentication, rate limits, or other behavioral traits, but sufficient for a simple lookup tool.

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

Conciseness4/5

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

The description is concise with two sentences, efficiently conveying the tool's purpose and parameter behavior. No unnecessary words, though it could be slightly more 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 tool with one optional parameter and no output schema, the description adequately covers purpose and output nature. However, given sibling tools like getVehicleRestrictions, more detail on distinctions would improve completeness.

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

Parameters4/5

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

Schema coverage is 100%, providing a baseline of 3. The description adds value by explaining that omitting the parameter returns all badges, and that results include meaning, qualifications, and restrictions, which enhances understanding beyond the schema enum.

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 retrieves information about DGT environmental badges, explaining meanings, qualifications, and restrictions. It is specific about the resource and purpose, though it does not explicitly differentiate from siblings like getVehicleRestrictions.

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 usage context (environmental badges) and notes that omitting the 'badge' parameter returns all badges. However, it does not provide explicit guidance on when to use this tool versus alternatives or when not to use it.

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

zbe.getStatsA

Get coverage statistics for the ZBE database. Returns total count, breakdown by country, and last update timestamp.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses the tool returns statistics and their structure (total count, breakdown by country, timestamp), which is sufficient for a read-only stat tool. No mention of auth or side effects, but none are needed.

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 concise sentences, front-loaded with the action and purpose. Every word adds value, with no redundancy.

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

Completeness5/5

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

Given no parameters, no output schema, and a simple retrieval task, the description fully informs the agent about what the tool does and what it returns. It is complete for its complexity.

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

Parameters4/5

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

There are no parameters, so schema coverage is 100%. The baseline for zero parameters is 4, and the description adds no extra parameter info, which is acceptable.

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

Purpose5/5

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

The description clearly states the tool retrieves coverage statistics for the ZBE database, with a specific verb ('Get') and resource. It also lists the returned data (total count, country breakdown, timestamp), making the purpose unmistakable.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus siblings, but the lack of parameters and the simple retrieval nature imply generic use for statistics. Sibling names like 'checkRoute' or 'getBadgeInfo' are distinct enough to avoid confusion.

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

zbe.getVehicleRestrictionsA

Get specific vehicle access restrictions for a given city's ZBE. Useful when planning routes to understand what vehicles are allowed in each urban area.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYesCity name to check
countryNoCountry code

TDQS

A3.7/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It only states the tool's function without mentioning any behavioral traits such as idempotency, side effects, rate limits, or authentication requirements. The description lacks necessary transparency for safe invocation.

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 concise sentences with front-loaded purpose. No redundant information; every word contributes to clarity.

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 tool with no output schema, the description sufficiently states primary function and usage context. However, it does not mention the return format or any additional details, leaving some ambiguity about the response structure.

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 coverage is 100% with descriptions for both parameters ('City name to check', 'Country code'). The description adds no extra meaning beyond what the schema already provides, meeting the baseline.

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

Purpose5/5

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

The description clearly states the tool retrieves specific vehicle access restrictions for a city's ZBE, with distinct verb 'Get' and resource 'vehicle restrictions'. It distinguishes from sibling tools like 'checkRoute' (route planning) and 'getBadgeInfo' (badges), making its purpose unambiguous.

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

Usage Guidelines4/5

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

The description provides clear context: 'Useful when planning routes to understand what vehicles are allowed in each urban area.' It implies when to use but does not explicitly exclude alternatives or compare to siblings.

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

zbe.listPolygonsA

List Low Emission Zone polygons with optional filters. Use this to browse available ZBEs, get their geometries, and see restriction details per city.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoFilter by city name
boundsNoBounding box: south,west,north,east
countryNoFilter by country
onlyRestrictedNoOnly show ZBEs with active restrictions

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. It describes the operation adequately (listing polygons with filters) but does not disclose potential behavioral details like pagination, error handling, or if it is read-only. For a simple list tool, this is acceptable but not exceptional.

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, front-loaded with the primary purpose, and each sentence adds value. No extraneous information is present, making it concise and well-structured.

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?

There is no output schema, so the description should explain return values. It mentions 'geometries' and 'restriction details per city,' which gives some idea, but does not specify the format or structure of the output, leaving some gaps.

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 100% (all four parameters have descriptions). The tool description adds no additional meaning beyond the schema. Per the guidelines, when coverage is high, the baseline is 3, and the description does not improve it.

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

Purpose5/5

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

The description clearly states it lists Low Emission Zone polygons with optional filters, specifying the verb 'list' and the resource 'polygons'. It distinguishes from sibling tools like checkRoute or getBadgeInfo by focusing on browsing available ZBEs and getting geometries.

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 says 'Use this to browse available ZBEs, get their geometries, and see restriction details per city,' providing clear context. However, it does not explicitly mention when not to use it or name alternatives, which would strengthen it given the siblings.

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. 5 tool updatesv0.1.0
    • First observedzbe.checkRoute
    • First observedzbe.getBadgeInfo
    • First observedzbe.getStats
    • First observedzbe.getVehicleRestrictions
    • First observedzbe.listPolygons

TDQS

A4.2/5.0
Disambiguation5/5

Each tool has a clear, distinct purpose: route checking, badge info, stats, city restrictions, and polygon listing. No overlap or ambiguity.

Naming Consistency5/5

All tools follow a consistent camelCase verb_noun pattern (e.g., checkRoute, listPolygons), making them predictable and easy to understand.

Tool Count5/5

Five tools is ideal for this domain, covering key operations without being too sparse or excessive. Each tool earns its place.

Completeness5/5

The tool set provides complete read-only coverage for querying ZBE data: route checking, city restrictions, polygon browsing, badge explanations, and database stats. No obvious gaps.

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/cargoffer/zbe-mcp-server'

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