Skip to main content
Glama
evand-mcp

evand-mcp

by Hr-ArshA

List Evand cities

list_cities
Read-onlyIdempotent

Lists Iranian cities with Evand events, event counts, and slugs for searching events, helping resolve ambiguous city filters or confirm exact city spellings.

Instructions

List Iranian cities that have events on Evand, with event counts and the slug to pass to search_events. Results are sorted by event count. Use this when a city filter is ambiguous or you need the exact spelling.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "list_cities"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNoMaximum cities to return, 1-100. Default 30.
queryNoOptional case-insensitive filter on city/province name.
include_emptyNoInclude cities with no currently listed events. Default false.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, open-world, so the safety profile is covered. The description adds behavior beyond that: results are sorted by event count and only cities with current events appear by default (the exception is documented in the include_empty schema field). It doesn't discuss rate limits or result-set completeness, but for a read-only lookup the added context is solid.

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

Conciseness5/5

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

Three short sentences, each earning its place: what is returned, how it is ordered, and when to call it. The most decision-relevant facts (scope and the downstream slug) are front-loaded.

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?

There is no output schema, so the description carries the return-value burden and does so: it names event counts, the slug, and the sort order. Combined with a fully documented 3-parameter schema and complete annotations, nothing an agent needs in order to call this correctly is missing.

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 limit, query, and include_empty are already fully documented, and the description correctly does not repeat them. It does add one piece of meaning beyond the schema by explaining that the returned slug is the value to pass to search_events, but that concerns the return value rather than the inputs, so baseline 3 applies.

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 verb and resource ('List Iranian cities that have events on Evand') plus the payload (event counts, slug). It also names the sibling consumer, search_events, so an agent can place it in a multi-step flow without opening schemas.

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?

Gives explicit triggering conditions: 'when a city filter is ambiguous or you need the exact spelling.' That is a clear when-to-use rule tied to a real failure mode of search_events. There is no explicit when-not or statement that this is only useful as a pre-step, but the routing is unambiguous.

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