Search cities
search_citiesSearch cities in the complete active worldwide university catalog, with country and university counts for assisted room search.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| offset | No | ||
| country_code | No |
search_citiesSearch cities in the complete active worldwide university catalog, with country and university counts for assisted room search.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| offset | No | ||
| country_code | No |
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds useful scope context ('complete active worldwide catalog') and notes that results include country and university counts, but it does not disclose return structure, pagination, or sorting behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence that wastes no words. It starts with the action and resource, then adds the key distinguishing output detail, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with four optional parameters, no output schema, and no parameter documentation, the description is too thin. It fails to explain expected return shape, filtering semantics, pagination, or how the counts are structured, leaving an agent without the information needed to call the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides no parameter-level guidance. It does not explain what 'query' matches, how 'country_code' filters, or how 'limit' and 'offset' behave. The description's mention of 'country and university counts' hints at output aggregation, but not at parameter semantics, so it fails to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Search'), a concrete resource ('cities in the complete active worldwide university catalog'), and adds a distinguishing output detail ('country and university counts'). This clearly differentiates it from the sibling search_universities and search_rooms tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for assisted room search' implies the tool is meant for a pre-room-search filtering step, giving some contextual usage guidance. However, it does not explicitly state when to use this versus search_universities or search_rooms, nor does it name any exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Add one secure layer between your agents and this server.
Most tools are distinct by resource and action, but the search/catalog cluster is fuzzy: search_universities, search_cities, list_search_metadata, and list_university_campuses overlap in purpose. search_rooms and rank_room_matches also have a similar discovery role, making it easy to select the wrong tool without careful reading.
All tool names follow a consistent snake_case verb_noun pattern, with verbs like add, list, get, search, create, update, and send clearly indicating the action. This makes the tool surface highly predictable and easy to navigate.
20 tools is on the heavier side, but the count is justified by the broad scope: room search, comparison, ranking, favorites, rental requests, messaging, listing creation, and university catalog browsing. The set remains manageable because each tool maps to a distinct workflow step.
Core room-finding workflows are covered well: search, details, compare, favorites, requests, and messages. However, listing management is incomplete (create_listing has no update/delete) and messaging only supports sending a first message, with no tool for replying to an existing conversation, leaving notable dead ends.