diff options
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/spec.md | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/docs/spec.md b/docs/spec.md index f8a72d4..80e464b 100644 --- a/docs/spec.md +++ b/docs/spec.md @@ -163,6 +163,11 @@ Nontrivial tools should default to `render=porcelain`. Structured `render=json` must remain available, but it is opt-in unless a tool is intrinsically structured and tiny. +`render` and detail are orthogonal concerns. + +- `render=porcelain|json` selects text versus structured output. +- `detail=concise|full` selects summary versus expanded output. + Porcelain output should be: - line-oriented @@ -174,6 +179,7 @@ Porcelain output should be: The library should therefore provide reusable primitives for: - render mode selection +- detail selection - bounded/truncated text shaping - stable note emission - path rendering @@ -181,10 +187,17 @@ The library should therefore provide reusable primitives for: - generic JSON-to-porcelain projection for consumers that have not yet earned bespoke renderers -`libmcp` does not require a universal detail taxonomy like -`summary|compact|full`. Consumers may add extra detail controls when their tool +`libmcp` standardizes only the minimal shared detail axis +`concise|full`. Consumers may add richer local taxonomies when their tool surface actually needs them. +When a tool supports both detail levels: + +- `porcelain + concise` should be the hot-path default +- `json + concise` should return a structured summary rather than the full + backing object +- `json + full` should remain the authoritative structured payload + ### Normalization The library should reduce trivial model-facing friction where the semantics are |