fix(spec): align permissions type with SDK implementation #305
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
The spec document incorrectly defined permission fields (
camera,microphone,geolocation,clipboardWrite) asbooleantypes, but the SDK implementation uses empty object types ({}).This caused validation errors for MCP servers (like Hex) that followed the spec and sent boolean values like
clipboardWrite: true, when the Zod schema expectsclipboardWrite: {}.Error message:
{ "code": "invalid_type", "expected": "object", "received": "boolean", "path": ["permissions", "clipboardWrite"], "message": "Expected object, received boolean" }Root Cause
spec.types.ts(TypeScript source)clipboardWrite?: {}schema.ts(generated Zod)z.object({}).optional()schema.json(generated JSON Schema)"type": "object"apps.mdx(human spec doc)clipboardWrite?: booleanFix
Updated all 4 occurrences of permission types in
apps.mdxfrombooleanto{}to match the TypeScript source of truth.Design Rationale
The empty object design was intentional to allow future extensibility (e.g., adding options like
{ required: true }or{ fallback: "deny" }). The spec doc was never updated to reflect this decision.