Model Context Protocol (MCP) server for AWS Black Belt Online Seminar
Two tools with clear naming and decent documentation, but both lack complete input schema visibility in the source code. Tool names follow verb_noun convention (search_*, get_*). Descriptions are adequate (80-120 chars), exceeding the 10-char minimum but below the 194-char baseline average. Parameters are documented with types and enums where present, but full schema cannot be verified from the provided code excerpt. The source code is truncated at `youtube_transcript_a`, preventing full assessment of schema completeness. Based on visible elements: search_seminars has well-defined string + enum parameters with sensible defaults; get_seminar_transcript has two string parameters with language default. Both tools are read-only with no destructive operations. Error handling and output schemas are not documented in the visible code.
Get transcript from seminar video. Note: Supported only in Japanese.
Search AWS Black Belt seminars by keyword.
Output schemas not documented. LLMs cannot plan downstream calls or extract structured data when tool response structure is unknown.
No error handling guidance. Tools do not document what errors can occur, whether they are retryable, or what the LLM should do next. For example, what happens if a YouTube URL is invalid or transcript is unavailable?
Incomplete parameter descriptions. 'query' parameter in search_seminars lacks format guidance (e.g., free-form text, max length, special characters allowed?). 'language' in get_seminar_transcript only lists 'ja' but does not explain what happens if other codes are passed.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 56 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 45 | - | v1 |
Pagination not addressed. search_seminars returns results with a 'limit' parameter (default 10, max 50), but the description does not clarify whether more results exist beyond the limit or how to retrieve them. No 'total_count' or 'next_cursor' mentioned.
Tool composition gap: search_seminars returns results but get_seminar_transcript requires a YouTube URL. No documented field in search_seminars response (e.g., 'youtube_url') to enable chaining. Forces LLM to reason about field mapping or perform external lookups.
get_seminar_transcript description states 'Supported only in Japanese' but the 'language' parameter defaults to 'ja' without explaining what happens if a non-Japanese language code is passed or if transcripts are unavailable in the requested language.
Source code truncated. The seminars.py file is cut off at 'youtube_transcript_a', preventing verification of complete input schema definitions, output schema declarations, and error handling logic.