Skip to main content
Glama

Search dance courses

search_dance_courses
Read-onlyIdempotent

Search public dance courses on udansa - the same results as the course search page. Filter by free text, city, dance style (any language), level, weekday, provider and price. Each result has id, title, style, level, city, venue, weekday, start/end, whether it runs continuously ('ongoing'), price ('free' when it costs nothing), free places and the course page URL. Also returns the most common filter values with counts (filter_options) and a link to the same search on udansa. Use get_course_details for one course; booking happens on the course page.

Input Schema

NameRequiredDescriptionDefault
cityNoCity as listed on udansa, usually the local name ('München', 'Wien'). English names like 'Munich' are tried as well. Values: filter_options.city or get_search_filter_options.
pageNoResult page, starting at 1.
sortNo
levelNoExact level value from filter_options.level of a search result.
limitNoResults per page (1-24, default 10).
queryNoFree text, partial words allowed, e.g. 'Salsa beginners'.
styleNoDance style name in any language, e.g. 'Bachata', 'Wedding dance', 'Hochzeitstanz'. Values: filter_options.style or get_search_filter_options.
weekdayNoOnly offers on this weekday.
languageNoTwo-letter language code for texts, style names and page links (de, en, fr, es, it, ...). Default de.de
providerNoExact dance school or organizer name from filter_options.provider of a search result; use query for partial names.
price_maxNo
price_minNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / additionalProperties
      Added value: +false
  2. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so safety is covered. The description adds genuinely new behavior: the exact result field set (id, title, style, level, city, venue, weekday, start/end, ongoing, price, free places, URL), the extra filter_options facet payload with counts, and a deep link to the same search. Pagination limits and total-count behavior are left to the schema.

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 filter list and the sibling pointer are front-loaded, and the closing sentence on get_course_details and booking is well placed. The middle sentence runs long by packing thirteen return fields into one clause, but each element is load-bearing given there is no output schema.

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 12 parameters and no output schema, the description carries the return-shape burden well by enumerating result fields and the filter_options facet with counts. What is missing is pagination context (page/limit interaction, ordering default) and the course-vs-events distinction, both of which matter for correct invocation.

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 75%, so most parameters are already self-documenting; the description's list of filter dimensions largely restates them. Its real additions are that style accepts any language (also in the schema) and that price is a filterable dimension, which partially compensates for the undocumented price_min/price_max. Sort, page and limit get no help beyond the schema.

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?

Specific verb + resource ("search public dance courses on udansa") with the scope pinned to "the same results as the course search page" and an explicit enumeration of filter dimensions. An agent can distinguish it from search_dance_events and get_course_details without opening any 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?

Explicitly routes single-course lookups to get_course_details and tells the agent that booking happens on the course page (i.e., this tool is discovery-only). It gives clear usage context but never addresses search_dance_events, the closest sibling, so the agent must infer courses vs events from the name alone.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources