Skip to main content
Glama
Cyreslab-AI

windy-webcams-mcp-server

Windy Webcam MCP Server

npm version License: MIT

A Model Context Protocol (MCP) server that provides access to the Windy Webcam Public API, enabling AI agents to search and retrieve information about live webcams from around the world.

Features

🌍 Global Webcam Access

  • Search webcams by location, category, and other criteria

  • Get detailed webcam information including images, timelapses, and live players

  • Find nearby webcams using geographic coordinates

  • Browse webcams by category (beaches, mountains, cities, etc.)

πŸ—ΊοΈ Geographic Filtering

  • Filter by country, region, or continent

  • Bounding box searches for specific geographic areas

  • Map clustering optimized for map display applications

  • Coordinate-based proximity searches

πŸ“Š Comprehensive Data

  • Live webcam feeds and preview images

  • Location information with detailed geographic data

  • Category classification for easy filtering

  • Player embeds for live streaming integration

  • Export functionality for bulk webcam data

πŸš€ Performance Features

  • Intelligent caching with configurable TTL

  • Rate limiting to respect API quotas

  • Retry logic with exponential backoff

  • Error handling with detailed error messages

Related MCP server: windscout-mcp

Installation

Prerequisites

npm Installation

npm install windy-webcam-mcp-server

From Source

git clone <repository-url>
cd windy-webcam-mcp-server
npm install
npm run build

Configuration

Environment Variables

Set your Windy API key as an environment variable:

export WINDY_API_KEY="your-api-key-here"

Or create a .env file:

WINDY_API_KEY=your-api-key-here

API Key

You can obtain a free API key from Windy API. The API has rate limits but provides access to a comprehensive database of worldwide webcams.

Usage

Command Line

# Using npm
npx windy-webcam-mcp-server

# Using node directly
node build/index.js

MCP Client Integration

Add to your MCP client configuration:

{
  "mcpServers": {
    "windy-webcam": {
      "command": "npx",
      "args": ["windy-webcam-mcp-server"],
      "env": {
        "WINDY_API_KEY": "your-api-key-here"
      }
    }
  }
}

Available Tools

πŸ” search_webcams

Search for webcams with various filters including location, category, and geographic criteria.

Parameters:

  • country - Country code (e.g., "US", "DE", "FR")

  • region - Region code within a country

  • continent - Continent code (e.g., "NA", "EU", "AS")

  • category - Category ID or comma-separated list

  • nearby - Coordinates for proximity search ("lat,lng")

  • bbox - Bounding box ("sw_lat,sw_lng,ne_lat,ne_lng")

  • limit - Number of results (1-50, default: 10)

  • offset - Result offset for pagination

  • order - Sort order (hotness, new, recent, random)

  • lang - Language code (default: "en")

πŸ“Ή get_webcam

Get detailed information about a specific webcam by ID.

Parameters:

  • webcam_id - Webcam identifier (required)

  • include - Additional data to include

  • lang - Language code (default: "en")

🌍 get_webcams_by_location

Get webcams from a specific geographic location.

Parameters:

  • location_type - Type of location (country, region, continent)

  • location_code - Location code (required)

  • limit - Number of results (1-50, default: 20)

  • order - Sort order

🏷️ get_webcams_by_category

Get webcams from specific categories.

Parameters:

  • categories - Category ID or comma-separated list (required)

  • limit - Number of results (1-50, default: 20)

  • order - Sort order

πŸ“ get_nearby_webcams

Find webcams near specific coordinates.

Parameters:

  • latitude - Latitude coordinate (required)

  • longitude - Longitude coordinate (required)

  • radius - Search radius in kilometers

  • limit - Number of results (1-50, default: 10)

πŸ—ΊοΈ get_map_clusters

Get webcam clusters optimized for map display.

Parameters:

  • ne_lat, ne_lng - Northeast corner coordinates (required)

  • sw_lat, sw_lng - Southwest corner coordinates (required)

  • zoom - Map zoom level (1-18)

  • cluster - Enable clustering (default: true)

πŸ“‚ get_categories

Get available webcam categories for filtering.

Parameters:

  • lang - Language code (default: "en")

🌎 get_countries

Get available countries with webcams.

Parameters:

  • lang - Language code (default: "en")

🏞️ get_regions

Get available regions with webcams.

Parameters:

  • lang - Language code (default: "en")

🌍 get_continents

Get available continents with webcams.

Parameters:

  • lang - Language code (default: "en")

πŸ“¦ export_all_webcams

Get basic information about all available webcams.

Parameters:

  • format - Export format (json)

Example Usage

Finding Beach Webcams in California

// Search for beach webcams in California
await use_mcp_tool({
  server_name: "windy-webcam",
  tool_name: "search_webcams",
  arguments: {
    country: "US",
    region: "US-CA",
    category: "beach",
    limit: 10
  }
});

Getting Webcams Near a Location

// Find webcams near San Francisco
await use_mcp_tool({
  server_name: "windy-webcam",
  tool_name: "get_nearby_webcams",
  arguments: {
    latitude: 37.7749,
    longitude: -122.4194,
    limit: 5
  }
});

Getting Available Categories

// Get all available categories
await use_mcp_tool({
  server_name: "windy-webcam",
  tool_name: "get_categories",
  arguments: {
    lang: "en"
  }
});

API Response Format

All tools return responses in the following format:

{
  "success": true,
  "summary": "Found 150 webcams (10 returned)",
  "data": {
    "offset": 0,
    "limit": 10,
    "total": 150,
    "webcams": [...]
  },
  "cached": false,
  "api_info": {
    "cache_hit": false,
    "response_time_ms": 245
  }
}

Rate Limiting and Caching

  • Rate Limiting: 1 second delay between API requests

  • Caching: 5-minute TTL for most endpoints

  • Retry Logic: 3 attempts with exponential backoff

  • Error Handling: Comprehensive error messages with status codes

Error Handling

The server handles various error scenarios:

  • Invalid API Key: Returns authentication error

  • Rate Limiting: Automatic retry with backoff

  • Not Found: Clear error messages for missing resources

  • Network Issues: Retry logic with timeout handling

Development

Building

npm run build

Testing

npm test

Development Mode

npm run dev

API Documentation

For detailed API documentation, visit: https://api.windy.com/webcams/docs

License

MIT License - see LICENSE file for details.

Contributing

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Add tests if applicable

  5. Submit a pull request

Support

For issues and questions:

  • Check the API documentation

  • Review the error messages for troubleshooting

  • Ensure your API key is valid and properly configured


Built with ❀️ for the Model Context Protocol ecosystem.

Available Tools

11 tools
export_all_webcamsA
Read-only

Get basic information about all available webcams

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoExport format

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
cachedNo
successYes
summaryYes
api_infoNo

TDQS

A3.6/5.0
Behavior3/5

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

The 'Get' phrasing aligns with readOnlyHint=true, and 'all available webcams' adds some context consistent with openWorldHint=true. However, the description adds little behavioral detail beyond the annotations, such as response size, pagination, or what 'basic information' includes.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. It immediately communicates the resource and scope, making it easy for an agent to parse quickly.

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 simple read-only export tool with one optional parameter and a provided output schema, the description is mostly complete. The phrase 'basic information' is slightly vague, but the output schema can resolve what fields are returned, so the gap is minor.

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%, with the only parameter 'format' already documented as an enum with the description 'Export format.' The tool description adds no extra meaning to this parameter, so the schema carries the burden and the baseline of 3 is appropriate.

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

Purpose4/5

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

The description states a clear verb and resource: 'Get basic information about all available webcams.' The phrase 'all available webcams' helps distinguish it from singular or scoped siblings like get_webcam and get_webcams_by_location, though it does not explicitly name them.

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 retrieving all webcams, but it does not explicitly say when to choose it over siblings such as search_webcams or get_webcams_by_category. No exclusions or alternative routing is provided, leaving the usage context mostly inferred.

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

get_categoriesA
Read-only

Get available webcam categories for filtering

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage code (default: "en")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
cachedNo
successYes
summaryYes
api_infoNo

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and openWorldHint, and the description is consistent with them. The description adds little behavioral context beyond that, such as whether results vary dynamically or how language affects output, so the bar is met but not exceeded.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no redundant words. It communicates the purpose and intended use immediately.

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?

This is a simple read-only list operation with one optional parameter, an output schema, and annotations covering safety. Nothing is missing for an agent to invoke it correctly.

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?

The only parameter, lang, has a full description in the input schema with a default value. The tool description does not add any parameter-specific meaning, so the baseline of 3 applies given the high schema coverage.

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

Purpose4/5

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

The description states a specific action and resource: 'Get available webcam categories for filtering.' It focuses on categories, which distinguishes it from sibling taxonomy tools like get_regions or get_countries, though it does not explicitly name alternatives.

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?

'For filtering' provides clear context about when to use this tool, so an agent understands it is the category source for filter operations. It does not give exclusions or compare against siblings such as get_webcams_by_category, so it is 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.

get_continentsB
Read-only

Get available continents with webcams

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage code (default: "en")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
cachedNo
successYes
summaryYes
api_infoNo

TDQS

B3.4/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the scope constraint 'with webcams' but provides no additional behavioral detail such as ordering, pagination, or data restrictions, which is acceptable given the annotations.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. It conveys the essential action and scope efficiently, appropriate for a simple read-only list tool.

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 low-complexity tool with a complete output schema, annotations, and full parameter schema coverage, the description covers the essential information. It lacks explicit routing to hierarchical siblings, but this is a minor gap for such a straightforward operation.

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?

The schema has 100% coverage for the single optional parameter 'lang', including its description and default value. The tool description adds no extra meaning beyond the schema, so the baseline score of 3 applies.

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

Purpose4/5

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

The description states a clear verb ('Get') and resource ('available continents with webcams'), making the tool's function obvious. However, it doesn't explicitly differentiate it from sibling tools like get_regions or get_countries, though the resource type implies a top-level geographical scope.

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

Usage Guidelines2/5

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

No guidance is provided for when to use this tool versus alternatives. The description does not mention when a caller should choose continents over regions, countries, or other sibling tools, leaving usage entirely to inference from the name.

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

get_countriesB
Read-only

Get available countries with webcams

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage code (default: "en")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
cachedNo
successYes
summaryYes
api_infoNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds the 'with webcams' constraint, which gives useful context about the data returned, but does not disclose other behaviors like language handling, error conditions, or output structure. This adds minor value beyond annotations, meriting a 3.

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 sentence with zero wasted words. It front-loads the action and resource, making it immediately understandable. This is model conciseness.

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 the tool's simplicity (one optional parameter, read-only, output schema present), the description sufficiently conveys the core purpose. The output schema presumably covers return structure, and the schema covers lang. Missing context about what 'available' means or how lang influences results is minor despite the output schema, so it is adequate but not exhaustive.

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%, with the lang parameter fully documented as a language code (default 'en'). The tool description adds no extra meaning about how lang affects the result or what language codes are valid, so it relies entirely on the schema. Baseline 3 applies.

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 'Get available countries with webcams' clearly states a specific verb (get) and resource (available countries with webcams), and is easily distinguished from siblings like get_regions and get_continents by its focus on countries. However, it does not explicitly name or contrast with any sibling, so it falls short of a 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as get_regions or get_continents. It simply states the function without any context about use cases, prerequisites, or when to prefer it over other geographic lookup tools.

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

get_map_clustersA
Read-only

Get webcam clusters optimized for map display

ParametersJSON Schema
NameRequiredDescriptionDefault
zoomNoMap zoom level (4-18, default: 10)
ne_latYesNortheast corner latitude
ne_lngYesNortheast corner longitude
sw_latYesSouthwest corner latitude
sw_lngYesSouthwest corner longitude
includeNoComma-separated list of extra data to include (default: "images,location"). One or more of: categories, images, location, player, urls.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
cachedNo
successYes
summaryYes
api_infoNo

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and openWorldHint, so the description is not responsible for safety disclosure. It adds the behavioral fact that results are clustered rather than raw webcams, but it does not describe clustering behavior, bounds handling, or how the response is optimized. This is useful but not rich.

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?

A single, front-loaded sentence with no filler. Every word carries purpose: resource, output shape, and intended display context. It does not repeat schema or annotation information.

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?

With a complete input schema, an output schema, and readOnly/openWorld annotations, the description covers most of what an agent needs to select and call the tool. Its only notable gap is lack of routing guidance to sibling webcam-list tools, but that gap is minor relative to the structured metadata provided.

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%, so parameter semantics are already fully documented. The description adds no parameter-level detail such as how zoom or include interacts with clustering, which meets but does not exceed the baseline.

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 uses a clear verb ('Get'), a specific resource ('webcam clusters'), and a context qualifier ('optimized for map display') that distinguishes this from individual-webcam or search siblings. It does not explicitly name or contrast any sibling, so it misses the strongest form of differentiation.

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?

'Optimized for map display' provides a concrete context for when this tool is appropriate, and 'clusters' implies aggregated output rather than single-webcam lookups. However, it gives no explicit when-not-to-use guidance or named alternatives such as get_nearby_webcams or get_webcams_by_location.

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

get_nearby_webcamsB
Read-only

Find webcams near specific coordinates

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of results to return (1-50, default: 10)
radiusNoSearch radius in kilometers (default: 50, max: 250)
includeNoComma-separated list of extra data to include (default: "images,location"). One or more of: categories, images, location, player, urls.
latitudeYesLatitude coordinate
longitudeYesLongitude coordinate

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
cachedNo
successYes
summaryYes
api_infoNo

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, so the agent knows this is a safe read operation and there is no contradiction. The description itself adds no behavioral disclosures such as result ordering, radius behavior, or effects of the include parameter; it mostly restates the core purpose without giving extra operational context.

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 sentence that front-loads the tool's purpose with no filler or redundant words. It is appropriately terse, even though the brevity shifts explanatory weight to the schema and annotations.

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 read-only lookup with a full output schema and complete parameter documentation, the description is minimally viable. However, it does not disambiguate against several closely related siblings such as get_webcams_by_location and search_webcams, so an agent may struggle to choose the right tool solely from this description.

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?

All five parameters are fully described in the schema with constraints and defaults, so the baseline of 3 applies. The description only mentions 'coordinates' and does not add semantic detail beyond the schema, but no compensation is needed because schema coverage is 100%.

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 uses a specific verb ('Find') with a clear resource ('webcams') and a geographic scoping clause ('near specific coordinates'). It clearly distinguishes coordinate-based proximity search from single-webcam retrieval, but it does not explicitly differentiate it from closely related sibling tools like get_webcams_by_location or search_webcams.

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 phrase 'near specific coordinates' implies the tool should be used when a coordinate-based proximity query is needed. However, the description never states when not to use it, nor does it mention any alternative sibling tools, leaving selection partially to inference.

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

get_regionsA
Read-only

Get available regions with webcams

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage code (default: "en")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
cachedNo
successYes
summaryYes
api_infoNo

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety and dynamic-data profile. The description adds one useful behavioral detail: the result set is filtered to regions that actually have webcams. It does not discuss language effects or pagination, but given the annotations carry the main behavioral burden, this is adequate.

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 sentence of seven words and contains no filler or repetition. It front-loads the core operation and the key qualifier ('with webcams') without wasting tokens.

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 read-only, single-optional-parameter tool with an output schema, the description is nearly complete. The only minor gap is that it does not clarify how regions relate to continents or countries, but sibling names and the output schema mitigate this ambiguity.

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%: the only parameter, 'lang', is already fully documented as a language code with a default of 'en'. The description adds no additional parameter-level nuance, so the baseline of 3 is appropriate.

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 ('Get') and a clear resource ('available regions with webcams'). The phrase 'with webcams' adds a meaningful filter that distinguishes this from sibling tools like get_continents or get_countries, and it clarifies what kind of region data is returned.

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 use case: when an agent needs to list regions that have webcam coverage. However, it does not explicitly say when to prefer this over get_continents, get_countries, or get_webcams_by_location, nor does it mention any exclusion conditions. Usage is inferable but not explicit.

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

get_webcamA
Read-only

Get detailed information about a specific webcam by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage code (default: "en")
includeNoComma-separated list of extra data to include (default: "images,location,player,urls"). One or more of: categories, images, location, player, urls.
webcam_idYesWebcam ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
cachedNo
successYes
summaryYes
api_infoNo

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds no further behavioral context such as response detail, potential size, or failure modes, but it is consistent with the annotations and does not contradict them.

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, clear sentence that front-loads the action and object. Every word earns its place, and there is no redundant or extraneous information.

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 simple single-ID lookup tool, the description combined with a fully documented schema, output schema, and annotations is sufficient. It lacks explicit sibling comparison, but the tool's purpose is unambiguous and the structured metadata fills the 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?

The input schema already provides 100% coverage for all three parameters, including the required webcam_id and the lang and include options with default values. The description does not add extra parameter meaning beyond what the schema documents, so it provides no additional value here.

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 ('Get') and resource ('detailed information about a specific webcam') and clearly identifies the lookup key ('by ID'). This distinguishes it from sibling tools like search_webcams or get_webcams_by_location, which operate on lists or location rather than a single ID.

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: call this when you have a webcam ID and need details. However, it does not explicitly state when to prefer this over alternatives, nor does it mention exclusions or conditions, so the usage guidance is only implied.

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

get_webcams_by_categoryB
Read-only

Get webcams from specific categories

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of results to return (1-50, default: 20)
includeNoComma-separated list of extra data to include (default: "images,location"). One or more of: categories, images, location, player, urls.
sortKeyNoField to sort results by
categoriesYesCategory ID or comma-separated list of category IDs, max 10
sortDirectionNoSort direction (used with sortKey)
categoryOperationNoOperator used to combine multiple categories (default: "and")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
cachedNo
successYes
summaryYes
api_infoNo

TDQS

B3.2/5.0
Behavior2/5

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

Beyond the readOnlyHint and openWorldHint annotations, the description discloses no behavioral traits such as pagination, defaults, or category-ID requirements. It simply restates the resource and filter, adding no value beyond what the annotations and schema already convey.

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 short, front-loaded sentence that states the subject and filter without redundant words. It earns its place and is easy to parse quickly.

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?

With a fully described six-parameter schema, an output schema, and read-only annotations, the tool is callable without additional context. The main shortfall is the lack of use-case differentiation from sibling tools, but that is covered under usage guidelines and does not make the definition incomplete for invoking the tool.

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%, so the schema already documents all six parameters including defaults and enums. The description adds no additional parameter meaning, placing it at the baseline for high schema coverage.

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

Purpose4/5

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

The description states a clear verb (get) and resource (webcams) with a category filter, which distinguishes it from location-based siblings like get_webcams_by_location and get_nearby_webcams. It does not explicitly name sibling alternatives or enumerate the category-based selection logic, but the core purpose is unambiguous.

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

Usage Guidelines2/5

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

No guidance is given about when to choose this tool over search_webcams, get_webcams_by_location, or get_nearby_webcams. The category filter is implied by the name and description, but there are no explicit exclusions or alternative mentions.

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

get_webcams_by_locationA
Read-only

Get webcams from a specific location (country, region, continent, or city)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of results to return (1-50, default: 20)
includeNoComma-separated list of extra data to include (default: "images,location"). One or more of: categories, images, location, player, urls.
sortKeyNoField to sort results by
location_codeYesLocation geo code (country/region/continent/city code)
location_typeYesType of location filter
sortDirectionNoSort direction (used with sortKey)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
cachedNo
successYes
summaryYes
api_infoNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the agent knows this is a safe read operation with potentially open-ended results. The description adds the location-filtering behavior but doesn't disclose details like default limit, pagination, or that results may be empty for invalid codes. With annotations covering the safety profile, a 3 is appropriate – the description adds some context but not rich behavioral detail.

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?

A single, efficient sentence that front-loads the core purpose and lists the supported location types. No wasted words, though it could be slightly more informative about usage context without becoming verbose.

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 read-only list tool with a rich output schema and 100% parameter documentation, the description is largely complete. The main gap is the lack of explicit guidance on how location_type and location_code interact (e.g., whether location_code must match the type), but the schema and enums cover most of this. The openWorldHint annotation also signals that results may vary, which is useful context.

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%, so the schema already documents all 6 parameters. The description adds the high-level concept that location_type and location_code work together to filter by location, but it doesn't add syntax or format details beyond what the schema provides. Baseline 3 is correct when the schema does the heavy lifting.

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

Purpose4/5

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

The description states a specific verb ('Get') and resource ('webcams') with a clear location filter scope ('country, region, continent, or city'). It distinguishes the tool from siblings like get_webcams_by_category and get_nearby_webcams by naming the location dimension, though it doesn't explicitly name a sibling alternative.

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 location-based webcam queries, which is clear from the name and description. However, it doesn't explicitly state when to use this tool versus alternatives like search_webcams or get_nearby_webcams, nor does it mention exclusions or prerequisites. The context is clear but no explicit routing guidance is provided.

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

search_webcamsC
Read-only

Search for webcams with various filters (location, category, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault
bboxNoBounding box coordinates (format: "north_lat,east_lon,south_lat,west_lon")
langNoLanguage code (default: "en")
limitNoNumber of results to return (1-50, default: 10)
citiesNoCity geo code or comma-separated list of city geo codes.
nearbyNoCoordinates and radius for nearby search (format: "latitude,longitude,radiusKm", radius max 250)
offsetNoResult offset for pagination (default: 0)
includeNoComma-separated list of extra data to include (default: "images,location"). One or more of: categories, images, location, player, urls.
regionsNoRegion geo code or comma-separated list of region geo codes, max 10. Codes come from get_regions.
sortKeyNoField to sort results by
countriesNoCountry geo code or comma-separated list of country geo codes (e.g., "US,DE,FR"), max 10. Codes come from get_countries.
webcamIdsNoWebcam ID or comma-separated list of webcam IDs to fetch directly (max 50). If set, all other filters are ignored β€” use this for batch webcam lookups.
categoriesNoCategory ID or comma-separated list of category IDs, max 10. One of: airport, beach, building, city, coast, forest, indoor, lake, landscape, meteo, mountain, observatory, port, river, sportArea, square, traffic, village.
continentsNoContinent geo code or comma-separated list of continent geo codes (e.g., "NA,EU,AS"), max 2. Codes come from get_continents.
sortDirectionNoSort direction (used with sortKey)
categoryOperationNoOperator used to combine multiple "categories" (requires categories to be set, default: "and")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
cachedNo
successYes
summaryYes
api_infoNo

TDQS

C2.6/5.0
Behavior2/5

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

The annotations already provide readOnlyHint and openWorldHint, and the description adds no behavioral context beyond a generic 'Search' phrase. It does not mention how filters combine, that webcamIds ignores other filters, or any other runtime behavior, leaving the description to carry little weight.

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

Conciseness4/5

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

The description is a single efficient sentence with no filler or redundancy. It is concise but under-specified; the 'etc.' is vague, yet for a schema-heavy tool this brevity is not penalized heavily.

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?

For a complex 15-parameter, all-optional search tool with an output schema, this one-line description is insufficient. It lacks high-level usage context, routing to specialized siblings, behavior when filters interact, and references to supporting tools like get_regions, get_countries, and get_categories.

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%, so the schema already documents all 15 parameters and their details. The description names 'location, category' but adds no meaning beyond the schema, so the baseline score of 3 is appropriate.

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

Purpose3/5

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

The description names a specific verb ('Search') and resource ('webcams') and mentions filters. However, it is vague about what makes this search distinct from siblings like get_webcams_by_location, get_webcams_by_category, and get_nearby_webcams, and does not clarify that it is a flexible multi-filter search.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus sibling tools, no mention of specialized alternatives, and no indication that webcamIds bypasses all other filters. The agent must infer usage entirely from the parameter schema and sibling names.

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. 11 tool updatesv1.0.0
    • First observedexport_all_webcams
    • First observedget_categories
    • First observedget_continents
    • First observedget_countries
    • First observedget_map_clusters
    • First observedget_nearby_webcams
    • First observedget_regions
    • First observedget_webcam
    • First observedget_webcams_by_category
    • First observedget_webcams_by_location
    • First observedsearch_webcams

TDQS

A3.5/5.0

Scored across 11 tools

Disambiguation4/5

Most tools target distinct query types (by ID, by location, by category, nearby, map clusters, reference lists), but search_webcams with filters overlaps conceptually with the dedicated by_location/by_category/nearby tools, creating mild ambiguity. The reference-list tools (regions, continents, countries, categories) are clearly distinct.

Naming Consistency4/5

The dominant pattern is get_webcams_by_* and get_<reference-entity>, which is consistent and predictable. Two exceptions, search_webcams and export_all_webcams, break the pattern but are still clear and understandable.

Tool Count5/5

With 11 tools, the server is well-scoped for a read-only webcam data API. Each tool serves a clear purpose, and the count is within the ideal 3-15 range without feeling bloated.

Completeness5/5

The surface covers the full range of likely queries: reference data, search, detail lookup, filtered listing by location/category, proximity search, map-friendly clusters, and bulk export. For a read-only public webcam API, there are no obvious dead ends or missing operations.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers