# udansa

> Find dance classes, dance events nearby and dance guide articles.

- name: com.udansa/udansa
- version: 0.3.1
- connection class: R0 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 92/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.udansa%2Fudansa
- tools: https://api.protogrid.dev/v1/servers/com.udansa%2Fudansa/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "udansa": {
      "type": "http",
      "url": "https://udansa.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% +updated-7d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 92/100 (new)

### protocol: 100 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- pass `protocol.list_ttl`: tool list is cacheable (ttlMs 86400000)

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 86 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 7 of 7 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: search_dance_courses (destructiveHint); search_dance_events (destructiveHint); get_search_filter_options (destructiveHint); …
- pass `tools.token_cost`: about 2,207 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`: tool history recorded for 6 of the 7 days needed

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 7, about 2,207 tokens to load them all
- tool set hash: f98fe63894055ba1697e12b7e4a0c09f
- tools last changed: 2026-10-17T18:04:44.057Z
- badge: [![protogrid quality](https://protogrid.dev/badge/com.udansa/udansa.svg)](https://protogrid.dev/servers/com.udansa/udansa)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-17 `get_event_details` changed (description)
  - before: Full public details of one dance event on udansa: title and description in the requested language, category, styles, start and end with time zone, venue, organizer (null for events curated by udansa), artists, programme, ticket categories with price and remaining tickets, add-ons, free places, series (next date), waitlist and whether tickets can be bought on udansa (booking.reason says why not; booking.external_url for external sale). Link: url.
  - after: Full public details of one dance event on udansa: title and description in the requested language, category, styles, start and end with time zone, venue, organizer (null for events curated by udansa), artists, programme, ticket categories with price and remaining tickets, add-ons, free places, series (next date), waitlist and whether tickets can be bought on udansa (booking.reason says why not, booking.tickets where tickets are instead - udansa gives no external ticket links). Link: url.
- 2026-10-17 `get_course_details` changed (description)
  - before: Full public details of one dance course on udansa: description, styles, level, provider, instructor, venue with address, schedule (start, end or 'ongoing', weekday, upcoming sessions, time zone), price and price options, free places, age limits, waitlist, trial lesson and whether it can be booked online on udansa (booking.reason says why not). Link: url.
  - after: Full public details of one dance course on udansa: description, styles, level, provider, instructor, venue with address, schedule (start, end or 'ongoing', weekday, upcoming sessions, time zone), price and price options, free places, age limits, waitlist, trial lesson and whether it can be booked online on udansa (booking.reason says why not, booking.book_at where to book instead - udansa gives no external booking links). Link: url.

Full history: https://api.protogrid.dev/v1/servers/com.udansa%2Fudansa/changes

## Remotes

- https://udansa.com/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (7)

- `get_course_details`: Full public details of one dance course on udansa: description, styles, level, provider, instructor, venue with address, schedule (start, end or 'ongoing', weekday, upcoming sessions, time zone), price and price options, free places, age limits, waitlist, trial lesson and whether it can be booked online on udansa (booking.reason says why not, booking.book_at where to book instead - udansa gives no external booking links). Link: url.
- `get_event_details`: Full public details of one dance event on udansa: title and description in the requested language, category, styles, start and end with time zone, venue, organizer (null for events curated by udansa), artists, programme, ticket categories with price and remaining tickets, add-ons, free places, series (next date), waitlist and whether tickets can be bought on udansa (booking.reason says why not, booking.tickets where tickets are instead - udansa gives no external ticket links). Link: url.
- `get_search_filter_options`: List every city and dance style that currently has courses (kind 'courses') or events (kind 'events') on udansa, with style names in the requested language. Use the values as city / style filters in search_dance_courses and search_dance_events.
- `read_page_text`: Read the text of a udansa content page (guide article, city or dance style page, terms, privacy or cancellation policy, about us) as plain sections plus its FAQ. Pass a URL or path from search_guide_articles, e.g. https://udansa.com/en/dance-guide/... For courses and events use get_course_details / get_event_details.
- `search_dance_courses`: 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.
- `search_dance_events`: Search upcoming dance events on udansa (parties, workshops, festivals, congresses, balls) - the same results as the event search page. Filter by free text, city, dance style (any language), category, weekday, organizer and price. Recurring events appear once with their next date. Each result has id, title, style, type, city, venue, start/end, price_from (null when the organizer has not published a price; 'free' only when it really costs nothing), how tickets are sold ('udansa', 'external', 'at_the_door'), a short summary and the event page URL. Use get_event_details for tickets and programme.
- `search_guide_articles`: Search udansa's editorial content: about 1,400 dance guide articles (learning to dance, finding a dance partner, wedding dance, dance styles, etiquette, health), city guides and dance style pages, in 40 languages. Returns titles, short summaries and page URLs; read one with read_page_text.
