# Voice School Lesson Booking (com.voice-school/singing-vocal-lesson-booking): tool descriptions scored

- tools/list taken: 2026-11-02 (UTC)
- From: [Official MCP Registry](https://registry.modelcontextprotocol.io/v0/servers/com.voice-school%2Fsinging-vocal-lesson-booking/versions/latest)
- Connected to: https://mcp.voice-school.com/singing-vocal-lesson-booking/mcp
- Homepage: https://voice-school.com/en/mcp/
- Repository: https://github.com/klishinoleg/voice
- Scoring rules: v2
- Tools: 31
- Average: 32.6 / 100 (Rain)
- Near-identical pairs: 0

This page shows how Voice School Lesson Booking (com.voice-school/singing-vocal-lesson-booking)'s tool descriptions scored, the issues found and the names of its tools and parameters. The descriptions are the server's own: read them where the copy came from.

Forecall asked the URL this server lists in the official MCP Registry for its tools/list once, on the date above, without calling any tool. The server may have changed since.

## Across the server

- Minor: 31 tools. Above 25, models start to tell tools apart less well.

## Tools

- `online_association_get`: 20 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: token, association_id.
  - Minor: String arguments with no constraint or example: token.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: association_id. Name the tool or the place that returns it, or models look it up first.
- `online_coach_associations_get`: 20 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: token, coach_id.
  - Minor: String arguments with no constraint or example: token.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: coach_id. Name the tool or the place that returns it, or models look it up first.
- `online_association_logo_set`: 23 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: token, association_id, revision, svg.
  - Minor: String arguments with no constraint or example: token, revision, svg.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: association_id. Name the tool or the place that returns it, or models look it up first.
- `online_coach_associations_set`: 23 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: token, coach_id, revision, memberships.
  - Minor: String arguments with no constraint or example: token, revision.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Major: It may be destructive, but destructiveHint is not set.
  - Minor: Required identifiers whose description does not say where the value comes from: coach_id. Name the tool or the place that returns it, or models look it up first.
- `list_social_posts`: 26 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: language, coach_slug, channel_slug, platform, limit.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `online_article_get`: 26 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: token, article_id.
  - Minor: String arguments with no constraint or example: token.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: article_id. Name the tool or the place that returns it, or models look it up first.
- `online_teacher_profiles_get`: 26 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: token, coach_id.
  - Minor: String arguments with no constraint or example: token.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: coach_id. Name the tool or the place that returns it, or models look it up first.
- `voice_school_info`: 27 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: language.
  - Minor: No `required` list, so every argument is optional.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `online_association_upsert`: 28 / 100
  - Major: Arguments without a description: token, association_id, revision, payload.
  - Minor: String arguments with no constraint or example: token, revision.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: association_id. Name the tool or the place that returns it, or models look it up first.
- `online_associations_list`: 28 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: token.
  - Minor: String arguments with no constraint or example: token.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `list_lesson_options`: 30 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: coach_slug, language.
  - Minor: No `required` list, so every argument is optional.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `online_articles_list`: 31 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: token.
  - Minor: String arguments with no constraint or example: token.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `online_content_get`: 31 / 100
  - Major: Arguments without a description: token.
  - Minor: String arguments with no constraint or example: token.
  - Minor: Says nothing about what it returns.
- `online_material_sections_get`: 31 / 100
  - Major: Arguments without a description: token.
  - Minor: String arguments with no constraint or example: token.
  - Minor: Says nothing about what it returns.
- `online_teacher_profiles_set`: 31 / 100
  - Major: Arguments without a description: token, coach_id, profiles, expected_version, request_id.
  - Minor: String arguments with no constraint or example: token, request_id.
  - Minor: Says nothing about what it returns.
- `online_content_preview`: 32 / 100
  - Major: Arguments without a description: token, page_id, language, public_path.
  - Minor: String arguments with no constraint or example: token.
  - Minor: Says nothing about what it returns.
- `online_content_edit`: 33 / 100
  - Major: Arguments without a description: token, operation, expected_version, document, request_id, data.
  - Minor: String arguments with no constraint or example: token, operation.
  - Minor: Says nothing about what it returns.
- `upsert_social_channel`: 34 / 100
  - Major: Arguments without a description: write_token, coach_slug, platform, title, slug, url, description, channel_type, is_active.
  - Minor: String arguments with no constraint or example: write_token, coach_slug, platform, title, slug, url.
  - Minor: The meaning of the boolean argument is_active is unclear.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `online_material_section_preview`: 35 / 100
  - Major: Arguments without a description: token, slug, language.
  - Minor: String arguments with no constraint or example: token, slug, language.
  - Minor: The description mentions none of its 3 or more arguments.
- `online_media_prepare`: 35 / 100
  - Major: Arguments without a description: token, filename, base64_data.
  - Minor: String arguments with no constraint or example: token, filename, base64_data.
  - Minor: The description mentions none of its 3 or more arguments.
- `upsert_trainer_social_link`: 35 / 100
  - Major: Arguments without a description: write_token, coach_slug, platform, url, label, handle, display_order, is_active.
  - Minor: String arguments with no constraint or example: write_token, coach_slug, platform, url.
  - Minor: The meaning of the boolean argument is_active is unclear.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `online_article_publish`: 36 / 100
  - Major: Arguments without a description: token, article_id, revision.
  - Minor: String arguments with no constraint or example: token, revision.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: article_id. Name the tool or the place that returns it, or models look it up first.
- `online_article_update`: 36 / 100
  - Major: Arguments without a description: token, article_id, revision, changes.
  - Minor: String arguments with no constraint or example: token, revision.
  - Minor: Says nothing about what it returns.
- `online_article_audio_set`: 38 / 100
  - Major: Arguments without a description: token, article_id, part_id, revision, filename, base64_data, request_id.
  - Minor: String arguments with no constraint or example: token, revision, filename, base64_data, request_id.
  - Minor: Required identifiers whose description does not say where the value comes from: article_id, part_id, request_id. Name the tool or the place that returns it, or models look it up first.
- `publish_social_post`: 38 / 100
  - Major: Arguments without a description: write_token, slug.
  - Minor: String arguments with no constraint or example: write_token, slug.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `create_social_post_draft`: 39 / 100
  - Major: Arguments without a description: write_token, coach_slug, channel_slug, channel_title, channel_url, source_post_url, title, slug, source_platform, external_post_id, source_published_at, language_code, excerpt, body, raw_text, seo_title, meta_description, keywords, tags, blocks, publish.
  - Minor: String arguments with no constraint or example: write_token, coach_slug, channel_slug, channel_title, channel_url, source_post_url.
  - Minor: The meaning of the boolean argument publish is unclear.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `search_lesson_availability`: 42 / 100
  - Major: Arguments without a description: coach_slug, service_slug, date_from, date_to, user_timezone, limit.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `online_material_section_publish`: 43 / 100
  - Major: Arguments without a description: token, slug, expected_version, draft_revision, request_id.
  - Minor: String arguments with no constraint or example: token, slug, draft_revision, request_id.
  - Minor: Required identifiers whose description does not say where the value comes from: request_id. Name the tool or the place that returns it, or models look it up first.
- `online_material_section_save`: 43 / 100
  - Major: Arguments without a description: token, slug, expected_version, section_revision, payload, request_id.
  - Minor: String arguments with no constraint or example: token, slug, section_revision, request_id.
  - Minor: Required identifiers whose description does not say where the value comes from: request_id. Name the tool or the place that returns it, or models look it up first.
- `online_article_create`: 45 / 100
  - Major: Arguments without a description: token, payload.
  - Minor: String arguments with no constraint or example: token.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `create_lesson_request`: 46 / 100
  - Major: Arguments without a description: name, phone, email, telegram, whatsapp, coach_slug, service_slug, requested_start, requester_timezone, source_agent, city_context, language, message.
  - Minor: String arguments with no constraint or example: name.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.

Is your server listed here and you would rather it were not? Email support@forecall.dev, and we will take it off within 7 days.

[All scored servers](https://forecall.dev/en/servers)
