MCP host adapter for the Drama Plugin tool registry. Provides a thin MCP server that projects Drama Plugin tools as MCP tools.
Drama MCP exposes 43 tools with basic schemas and minimal descriptions. All tools have input schemas with required fields and type definitions, but descriptions are uniformly terse (10-30 chars), falling well below the 50-200 char LLM-optimized baseline. Parameter descriptions are entirely absent, only field names and types are visible. No output schemas are documented. Error handling is not evident in tool definitions. The server implements a thin adapter over a Drama plugin, delegating logic downstream, which limits visibility into validation, recovery guidance, and error classification. Tool naming follows verb_noun convention (create_work, get_script, list_episodes) but lacks context about when to use similar tools (e.g., search_works vs list_works distinction is unclear). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are present despite clear WRITE vs READ_ONLY risk classifications in the metadata.
Create a new asset
Get an asset by ID
List assets by type
Save/update an asset
Search assets by query
Build context for a resource
Refresh context with new version
Create a new episode
All tool descriptions are under 30 characters (e.g., 'Create a new work', 'Get a work by ID'). These terse descriptions lack context for LLM tool selection, they do not explain WHEN to use the tool, what it returns, or how it differs from similar tools (e.g., search_works vs list_works).
No parameter descriptions are visible in any tool schema. Parameters like 'content' (object type, no description), 'order' (integer, no description), 'shot_type' (string, no description) lack guidance on what values are valid or what they control. LLMs cannot infer parameter semantics from names alone.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2025-06-18+ | v2 |
Get an episode by ID
List episodes for a script
Save/update an episode
Create a new media
Get media by ID
Import media from external source
List media by type
Resolve media content URL
Restore media object
Save/update media
Generate audio from prompt
Generate image from prompt
Generate video from prompt
Search research database
Verify a research claim
Create a new scene
Get a scene by ID
List scenes for an episode
Save/update a scene
Search scenes by query
Create a new script
Get a script by ID
List scripts for a work
Save/update a script
Create a new shot
Get a shot by ID
List shots for a scene
Search shots by query
Get voice by ID
Resolve voice content URL
Create a new work
Get a work by ID
List all works
Save/update a work
Search works by query
No output schemas are documented. Tools return structured objects (e.g., work with 'id', 'title', 'description', 'content' fields visible in E2E test), but the tool definitions do not declare what fields are returned or their types. LLMs cannot plan downstream tool calls without knowing what data is available.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are present despite clear WRITE vs READ_ONLY risk classifications in metadata. Tools like work.create_work, work.save_work, script.create_script are marked WRITE but lack destructiveHint annotation. This prevents agents from understanding which tools have irreversible side effects.
No error handling guidance is visible. Tools like media.import_media and media.restore_media_object have empty input schemas (no required fields), suggesting they may fail silently or with opaque errors. No recovery hints, retryability classification, or actionable error messages are documented.