Compose Preview Catalogs
Qué hace este MCP
Browses, renders, compares, audits, and edits Jetpack Compose preview catalogs and associated UI designs.
Herramientas
Esquema de entrada
{'type': 'object', 'anyOf': [{'required': ['uri']}, {'required': ['catalog', 'previewId']}], 'required': ['other'], 'properties': {'uri': {'type': 'string'}, 'other': {'type': 'object', 'properties': {'uri': {'type': 'string'}, 'catalog': {'type': 'string'}, 'previewId': {'type': 'string'}}}, 'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'catalog': {'type': 'string'}, 'overrides': {'type': 'object', 'additionalProperties': {'type': ['string', 'number', 'boolean']}}, 'previewId': {'type': 'string'}, 'otherOverrides': {'type': 'object', 'additionalProperties': {'type': ['string', 'number', 'boolean']}}}}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'anyOf': [{'required': ['uri']}, {'required': ['catalog', 'previewId']}], 'required': ['kind'], 'properties': {'uri': {'type': 'string'}, 'kind': {'type': 'string'}, 'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'catalog': {'type': 'string'}, 'overrides': {'type': 'object', 'additionalProperties': {'type': ['string', 'number', 'boolean']}}, 'previewId': {'type': 'string'}}}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'anyOf': [{'required': ['uri']}, {'required': ['catalog', 'previewId']}], 'properties': {'to': {'type': 'string'}, 'uri': {'type': 'string'}, 'from': {'type': 'string'}, 'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'catalog': {'type': 'string'}, 'previewId': {'type': 'string'}}}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'anyOf': [{'required': ['uri']}, {'required': ['catalog', 'previewId']}], 'properties': {'uri': {'type': 'string'}, 'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'catalog': {'type': 'string'}, 'previewId': {'type': 'string'}}}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'anyOf': [{'required': ['uri']}, {'required': ['catalog', 'previewId']}], 'properties': {'uri': {'type': 'string'}, 'blob': {'type': 'string'}, 'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'commit': {'type': 'string'}, 'catalog': {'type': 'string'}, 'previewId': {'type': 'string'}}}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'projectId': {'type': 'string', 'description': 'A catalog id from catalog_list_projects whose previews to list.'}}}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'anyOf': [{'required': ['catalog']}, {'required': ['uri']}], 'properties': {'uri': {'type': 'string'}, 'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'catalog': {'type': 'string'}, 'previewId': {'type': 'string'}}}
Esquema de salida
{'type': 'object', 'required': ['dataProducts'], 'properties': {'dataProducts': {'type': 'array', 'items': {'type': 'object'}}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}}}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'required': ['catalog'], 'properties': {'limit': {'type': 'integer', 'maximum': 500, 'minimum': 1}, 'query': {'type': 'string', 'description': 'Case-insensitive substring of a preview id or label, such as a component name.'}, 'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'offset': {'type': 'integer', 'minimum': 0}, 'catalog': {'type': 'string', 'description': 'A catalog id from catalog_list_projects.'}}}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}}}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'anyOf': [{'required': ['uri']}, {'required': ['catalog', 'previewId']}], 'required': ['axes'], 'properties': {'uri': {'type': 'string'}, 'axes': {'type': 'object', 'additionalProperties': {'type': 'array', 'items': {'type': ['string', 'number', 'boolean']}, 'minItems': 1}}, 'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'catalog': {'type': 'string'}, 'observe': {'enum': ['png', 'hash'], 'type': 'string'}, 'overrides': {'type': 'object', 'additionalProperties': {'type': ['string', 'number', 'boolean']}}, 'previewId': {'type': 'string'}}}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'anyOf': [{'required': ['uri']}, {'required': ['catalog', 'previewId']}], 'properties': {'uri': {'type': 'string'}, 'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'catalog': {'type': 'string'}, 'observe': {'enum': ['png', 'svg', 'scroll-png', 'scroll-svg', 'semantics', 'hash'], 'type': 'string'}, 'overrides': {'type': 'object', 'additionalProperties': {'type': ['string', 'number', 'boolean']}}, 'previewId': {'type': 'string'}}}
Esquema de salida
{'type': 'object', 'properties': {'imageUrl': {'type': 'string', 'description': 'Short-lived signed https URL of the rendered PNG, on a host with a public origin.'}}}
Esquema de entrada
{'type': 'object', 'anyOf': [{'required': ['storyId']}, {'required': ['id']}], 'properties': {'id': {'type': 'string'}, 'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'storyId': {'type': 'string'}}}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}}}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'required': ['requestId', 'deviceSecret'], 'properties': {'urlMode': {'type': 'boolean', 'description': 'Use the protocol-standard URL elicitation UI while this request is pending.'}, 'requestId': {'type': 'string'}, 'waitSeconds': {'type': 'integer', 'maximum': 30, 'minimum': 0}, 'deviceSecret': {'type': 'string'}}}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'anyOf': [{'required': ['storyIds']}, {'required': ['storyId']}, {'required': ['ids']}, {'required': ['id']}], 'properties': {'id': {'type': 'string'}, 'ids': {'type': 'array', 'items': {'type': 'string'}}, 'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'observe': {'enum': ['png', 'svg', 'scroll-png', 'scroll-svg', 'semantics', 'hash'], 'type': 'string'}, 'storyId': {'type': 'string'}, 'storyIds': {'type': 'array', 'items': {'type': 'string'}}, 'overrides': {'type': 'object', 'additionalProperties': {'type': ['string', 'number', 'boolean']}}}}
Esquema de salida
{'type': 'object', 'required': ['observations'], 'properties': {'observations': {'type': 'array', 'items': {'type': 'object'}}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', 'properties': {'label': {'type': 'string'}, 'scope': {'enum': ['preview', 'live', 'playground'], 'type': 'string'}, 'ttlSeconds': {'type': 'integer'}, 'capabilities': {'type': 'array', 'items': {'type': 'string'}}}}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}}}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'required': ['designId'], 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'designId': {'type': 'string'}, 'threadId': {'type': 'string', 'description': 'One thread. Omit for every thread on the design.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'required': ['designId', 'operationId', 'baseRevision', 'operations'], 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'clientId': {'type': 'string'}, 'designId': {'type': 'string'}, 'operations': {'type': 'array', 'items': {'type': 'object'}, 'description': 'DesignMutationV1 objects. State example: {"type":"setStateVariable","name":"expanded","declaration":{"type":"value","valueType":"bool","initialValue":false,"nullable":false,"persistence":"preview"}}. Event example: {"type":"setEventBinding","nodeId":"button","event":"click","actions":[{"type":"toggle","variable":"expanded"}]}. Declare state before binding it in the batch.'}, 'operationId': {'type': 'string', 'description': 'Your id for this operation; makes a retry idempotent.'}, 'baseRevision': {'type': 'integer', 'description': 'The revision these mutations were written against.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'required': ['branchId'], 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'branchId': {'type': 'string'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'required': ['schema', 'branch', 'summary'], 'properties': {'branch': {'type': 'object', 'required': ['branchId', 'parentDesignId', 'name', 'ownerActorId', 'status', 'forkRevision', 'forkDocumentHash', 'headRevision', 'commandCount', 'createdAtEpochMillis', 'summary'], 'properties': {'name': {'type': 'string'}, 'status': {'type': 'string'}, 'summary': {'type': 'string'}, 'branchId': {'type': 'string'}, 'commandCount': {'type': 'integer'}, 'forkRevision': {'type': 'integer'}, 'headRevision': {'type': 'integer'}, 'ownerActorId': {'type': 'string'}, 'parentDesignId': {'type': 'string'}, 'closedByActorId': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'forkDocumentHash': {'type': 'string'}, 'closedAtEpochMillis': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'createdAtEpochMillis': {'type': 'integer'}, 'supersededByBranchId': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'mergedAtParentRevision': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'schema': {'type': 'string', 'const': 'compose-preview/ui-builder-branch/v1'}, 'summary': {'type': 'string'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', 'required': ['designId', 'afterSequence'], 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'designId': {'type': 'string'}, 'waitSeconds': {'type': 'integer', 'description': 'Up to 120. Defaults to 25.'}, 'afterSequence': {'type': 'integer', 'description': 'The `sequence` you last saw. 0 for anything at all.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'required': ['designId'], 'properties': {'from': {'enum': ['human', 'anyone'], 'type': 'string', 'description': 'Whose decisions count. Defaults to human.'}, 'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'designId': {'type': 'string'}, 'revision': {'type': 'integer', 'description': 'Only decisions on this revision.'}, 'waitSeconds': {'type': 'integer', 'description': 'Up to 120. Defaults to 25; 0 checks without blocking.'}, 'afterSequence': {'type': 'integer', 'description': 'The `sequence` you last saw. 0 for anything at all.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'required': ['schema', 'summary', 'designId', 'timedOut', 'sequence', 'approved'], 'properties': {'latest': {'anyOf': [{'type': 'object', 'required': ['decisionId', 'sequence', 'revision', 'verdict', 'decidedBy', 'deciderKind', 'decidedAtEpochMillis'], 'properties': {'note': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'verdict': {'type': 'string'}, 'revision': {'type': 'integer'}, 'sequence': {'type': 'integer'}, 'decidedBy': {'type': 'string'}, 'decisionId': {'type': 'string'}, 'deciderKind': {'type': 'string'}, 'displayName': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'decidedAtEpochMillis': {'type': 'integer'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'schema': {'type': 'string', 'const': 'compose-preview/ui-builder-decision/v1'}, 'summary': {'type': 'string'}, 'approved': {'type': 'boolean'}, 'designId': {'type': 'string'}, 'sequence': {'type': 'integer'}, 'timedOut': {'type': 'boolean'}, 'decisions': {'type': 'array', 'items': {'type': 'object', 'required': ['decisionId', 'sequence', 'revision', 'verdict', 'decidedBy', 'deciderKind', 'decidedAtEpochMillis'], 'properties': {'note': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'verdict': {'type': 'string'}, 'revision': {'type': 'integer'}, 'sequence': {'type': 'integer'}, 'decidedBy': {'type': 'string'}, 'decisionId': {'type': 'string'}, 'deciderKind': {'type': 'string'}, 'displayName': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'decidedAtEpochMillis': {'type': 'integer'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', 'required': ['designId', 'afterSequence'], 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'designId': {'type': 'string'}, 'waitSeconds': {'type': 'integer', 'description': 'Up to 120. Defaults to 25.'}, 'afterSequence': {'type': 'integer', 'description': 'The `lastSequence` you last saw, from ui_builder_get_design or a previous wait.'}, 'includeCatalog': {'type': 'boolean', 'description': 'When the reply is a whole snapshot, embed the pinned catalog in it. Defaults to false.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'required': ['designId', 'name'], 'properties': {'name': {'type': 'string', 'description': 'What this alternative is, e.g. `compact header`.'}, 'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'branchId': {'type': 'string', 'description': "The branch's design id. Defaults to one minted from the parent's; naming one makes a retry idempotent."}, 'designId': {'type': 'string', 'description': 'The design to branch.'}, 'revision': {'type': 'integer', 'description': 'A retained revision to fork at. Omit for the current one.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'required': ['schema', 'branch', 'summary'], 'properties': {'branch': {'type': 'object', 'required': ['branchId', 'parentDesignId', 'name', 'ownerActorId', 'status', 'forkRevision', 'forkDocumentHash', 'headRevision', 'commandCount', 'createdAtEpochMillis', 'summary'], 'properties': {'name': {'type': 'string'}, 'status': {'type': 'string'}, 'summary': {'type': 'string'}, 'branchId': {'type': 'string'}, 'commandCount': {'type': 'integer'}, 'forkRevision': {'type': 'integer'}, 'headRevision': {'type': 'integer'}, 'ownerActorId': {'type': 'string'}, 'parentDesignId': {'type': 'string'}, 'closedByActorId': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'forkDocumentHash': {'type': 'string'}, 'closedAtEpochMillis': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'createdAtEpochMillis': {'type': 'integer'}, 'supersededByBranchId': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'mergedAtParentRevision': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'schema': {'type': 'string', 'const': 'compose-preview/ui-builder-branch/v1'}, 'summary': {'type': 'string'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'checks': {'type': 'array', 'items': {'enum': ['schema', 'catalog', 'a11y'], 'type': 'string'}, 'description': 'Which checks to run. Defaults to all three.'}, 'designId': {'type': 'string', 'description': 'A stored design to check, or to check `operations` against.'}, 'document': {'type': 'object', 'description': 'A whole DesignDocumentV1 to check instead of a stored design.'}, 'rendered': {'type': 'boolean', 'description': 'Measure touch targets on a native render. Defaults to false.'}, 'revision': {'type': 'integer', 'description': 'A past revision of `designId`. Omit for the current one.'}, 'operations': {'type': 'array', 'items': {'type': 'object'}, 'description': 'DesignMutationV1 objects to apply to a scratch copy of `designId` and check — a dry run.'}, 'baseRevision': {'type': 'integer', 'description': 'The revision `operations` were written against; a stale one is a warning.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'required': ['schema', 'ok', 'summary', 'checks', 'errors', 'warnings', 'findings'], 'properties': {'ok': {'type': 'boolean'}, 'checks': {'type': 'array', 'items': {'type': 'string'}}, 'dryRun': {'type': 'boolean'}, 'errors': {'type': 'integer'}, 'schema': {'type': 'string', 'const': 'compose-preview/ui-builder-design-check/v1'}, 'skipped': {'type': 'array', 'items': {'type': 'object', 'required': ['check', 'reason'], 'properties': {'check': {'type': 'string'}, 'reason': {'type': 'string'}}, 'additionalProperties': False}}, 'summary': {'type': 'string'}, 'designId': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'findings': {'type': 'array', 'items': {'type': 'object', 'required': ['severity', 'check', 'code', 'message'], 'properties': {'code': {'type': 'string'}, 'check': {'type': 'string'}, 'field': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'nodeId': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'message': {'type': 'string'}, 'measured': {'anyOf': [{'type': 'object', 'properties': {'unit': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ratio': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'width': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'height': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'required': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}}, 'additionalProperties': False}, {'type': 'null'}]}, 'severity': {'type': 'string'}, 'operationIndex': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'revision': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'warnings': {'type': 'integer'}, 'truncated': {'type': 'integer'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', 'required': ['designId'], 'properties': {'fit': {'enum': ['contain', 'width', 'actual'], 'type': 'string', 'description': 'How the picture is placed: contained and centred, across the width from the top, or at its own size from the top-left. Defaults to the fit the picture calls for (facts.recommendedFit).'}, 'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'nodeIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Layers to match against the reference, each with a proposed alignment.'}, 'designId': {'type': 'string'}, 'renderer': {'enum': ['export', 'native'], 'type': 'string', 'description': 'Which render to measure. Defaults to native when nodeIds is given, export otherwise.'}, 'revision': {'type': 'integer', 'description': 'Measure this revision. Defaults to the current one.'}, 'differences': {'type': 'boolean', 'description': 'Measure where the frame differs. Defaults to true.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'required': ['schema', 'designId', 'revision', 'renderer', 'reference', 'facts'], 'properties': {'facts': {'type': 'object', 'required': ['widthPx', 'heightPx', 'density', 'densitySource', 'widthDp', 'heightDp', 'frameWidthDp', 'frameHeightDp', 'designDensity', 'kind', 'fit', 'pixelComparable', 'advice'], 'properties': {'fit': {'type': 'string'}, 'kind': {'type': 'string'}, 'advice': {'type': 'string'}, 'density': {'type': 'number'}, 'widthDp': {'type': 'integer'}, 'widthPx': {'type': 'integer'}, 'heightDp': {'type': 'integer'}, 'heightPx': {'type': 'integer'}, 'frameWidthDp': {'type': 'integer'}, 'densityBucket': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'densitySource': {'type': 'string'}, 'designDensity': {'type': 'number'}, 'frameHeightDp': {'type': 'integer'}, 'recommendedFit': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'pixelComparable': {'type': 'boolean'}}, 'additionalProperties': False}, 'notes': {'type': 'array', 'items': {'type': 'string'}}, 'layers': {'type': 'array', 'items': {'type': 'object', 'required': ['nodeId'], 'properties': {'nodeId': {'type': 'string'}, 'source': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'target': {'anyOf': [{'type': 'object', 'required': ['xDp', 'yDp', 'widthDp', 'heightDp'], 'properties': {'xDp': {'type': 'number'}, 'yDp': {'type': 'number'}, 'widthDp': {'type': 'number'}, 'heightDp': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'current': {'anyOf': [{'type': 'object', 'required': ['xDp', 'yDp', 'widthDp', 'heightDp'], 'properties': {'xDp': {'type': 'number'}, 'yDp': {'type': 'number'}, 'widthDp': {'type': 'number'}, 'heightDp': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'message': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'alignment': {'anyOf': [{'type': 'object', 'required': ['summary'], 'properties': {'moveXDp': {'type': 'integer'}, 'moveYDp': {'type': 'integer'}, 'summary': {'type': 'string'}, 'widthDp': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'heightDp': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'fontSizeSp': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}}, 'additionalProperties': False}, {'type': 'null'}]}, 'confident': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}]}, 'textScale': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'operations': {'type': 'array', 'items': {'type': 'object'}}, 'alreadyAligned': {'type': 'boolean'}, 'fontSizeSource': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'schema': {'type': 'string', 'const': 'compose-ui-builder-reference-comparison/v1'}, 'designId': {'type': 'string'}, 'renderer': {'type': 'string'}, 'revision': {'type': 'integer'}, 'reference': {'type': 'object', 'required': ['name', 'mediaType', 'widthPx', 'heightPx'], 'properties': {'name': {'type': 'string'}, 'widthPx': {'type': 'integer'}, 'heightPx': {'type': 'integer'}, 'mediaType': {'type': 'string'}, 'sourceUrl': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'differences': {'anyOf': [{'type': 'object', 'required': ['mismatch', 'coverage', 'regions'], 'properties': {'regions': {'type': 'array', 'items': {'type': 'object', 'required': ['xDp', 'yDp', 'widthDp', 'heightDp', 'mismatch'], 'properties': {'xDp': {'type': 'integer'}, 'yDp': {'type': 'integer'}, 'nodeId': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'widthDp': {'type': 'integer'}, 'heightDp': {'type': 'integer'}, 'mismatch': {'type': 'number'}}, 'additionalProperties': False}}, 'coverage': {'type': 'number'}, 'mismatch': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'differencesMessage': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', 'required': ['designId'], 'properties': {'title': {'type': 'string'}, 'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'designId': {'type': 'string', 'description': 'The id for the new design.'}, 'document': {'type': 'object', 'description': 'A whole DesignDocumentV1.'}, 'fromDesignId': {'type': 'string', 'description': "Copy this design's document instead."}, 'includeCatalog': {'type': 'boolean', 'description': 'Embed the pinned catalog in the returned snapshot. Defaults to false.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'required': ['designId'], 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'designId': {'type': 'string'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'required': ['designId'], 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'designId': {'type': 'string'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'required': ['a'], 'properties': {'a': {'type': 'object', 'required': ['designId'], 'properties': {'designId': {'type': 'string'}, 'revision': {'type': 'integer', 'description': 'A retained revision. Omit for the current one.'}}, 'additionalProperties': False}, 'b': {'type': 'object', 'required': ['designId'], 'properties': {'designId': {'type': 'string'}, 'revision': {'type': 'integer', 'description': 'A retained revision. Omit for the current one.'}}, 'additionalProperties': False}, 'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'required': ['schema', 'a', 'b', 'identical', 'summary', 'counts'], 'properties': {'a': {'type': 'object', 'required': ['designId', 'revision', 'title', 'documentDigest'], 'properties': {'title': {'type': 'string'}, 'designId': {'type': 'string'}, 'revision': {'type': 'integer'}, 'documentDigest': {'type': 'string'}}, 'additionalProperties': False}, 'b': {'type': 'object', 'required': ['designId', 'revision', 'title', 'documentDigest'], 'properties': {'title': {'type': 'string'}, 'designId': {'type': 'string'}, 'revision': {'type': 'integer'}, 'documentDigest': {'type': 'string'}}, 'additionalProperties': False}, 'nodes': {'type': 'array', 'items': {'type': 'object', 'required': ['nodeId', 'change', 'componentId', 'path'], 'properties': {'to': {'anyOf': [{'type': 'object', 'required': ['index'], 'properties': {'slot': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'index': {'type': 'integer'}, 'parentId': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}, {'type': 'null'}]}, 'from': {'anyOf': [{'type': 'object', 'required': ['index'], 'properties': {'slot': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'index': {'type': 'integer'}, 'parentId': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}, {'type': 'null'}]}, 'path': {'type': 'string'}, 'change': {'type': 'string'}, 'fields': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'after': {'anyOf': [{}, {'type': 'null'}]}, 'before': {'anyOf': [{}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'nodeId': {'type': 'string'}, 'modifiers': {'anyOf': [{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'after': {'anyOf': [{}, {'type': 'null'}]}, 'before': {'anyOf': [{}, {'type': 'null'}]}}, 'additionalProperties': False}, {'type': 'null'}]}, 'beforePath': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'properties': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'after': {'anyOf': [{}, {'type': 'null'}]}, 'before': {'anyOf': [{}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'componentId': {'type': 'string'}}, 'additionalProperties': False}}, 'counts': {'type': 'object', 'required': ['added', 'removed', 'moved', 'changed', 'document'], 'properties': {'added': {'type': 'integer'}, 'moved': {'type': 'integer'}, 'changed': {'type': 'integer'}, 'removed': {'type': 'integer'}, 'document': {'type': 'integer'}}, 'additionalProperties': False}, 'schema': {'type': 'string', 'const': 'compose-preview/ui-builder-design-diff/v1'}, 'summary': {'type': 'string'}, 'document': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'after': {'anyOf': [{}, {'type': 'null'}]}, 'before': {'anyOf': [{}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'identical': {'type': 'boolean'}, 'truncated': {'type': 'boolean'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', 'required': ['designId'], 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'format': {'type': 'string', 'description': 'Defaults to compose. Available formats: compose, svg, png, bundle. Check the catalog exportCapabilities.'}, 'designId': {'type': 'string'}, 'revision': {'type': 'integer'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'required': ['pr'], 'properties': {'pr': {'type': 'string', 'description': 'The pull request URL, exactly as recorded.'}, 'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'required': ['schema', 'summary', 'pr', 'designs'], 'properties': {'pr': {'type': 'string'}, 'schema': {'type': 'string', 'const': 'compose-preview/ui-builder-pr-designs/v1'}, 'designs': {'type': 'array', 'items': {'type': 'object', 'required': ['designId'], 'properties': {'status': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'designId': {'type': 'string'}, 'revision': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'summary': {'type': 'string'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', 'required': ['designId'], 'properties': {'title': {'type': 'string', 'description': "The fork's title. Defaults to the parent's, marked with the revision."}, 'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'designId': {'type': 'string', 'description': 'The design to fork.'}, 'revision': {'type': 'integer', 'description': 'A retained revision. Omit for the current one.'}, 'newDesignId': {'type': 'string', 'description': "The fork's id. Defaults to one derived from the parent; an id already taken is refused."}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'required': ['schema', 'designId', 'title', 'revision', 'forkedFrom', 'ancestryRecorded', 'summary'], 'properties': {'home': {'anyOf': [{'oneOf': [{'type': 'object', 'required': ['kind', 'path'], 'properties': {'kind': {'const': 'repo'}, 'path': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'url', 'designId'], 'properties': {'url': {'type': 'string'}, 'kind': {'const': 'server'}, 'designId': {'type': 'string'}}, 'additionalProperties': False}]}, {'type': 'null'}]}, 'title': {'type': 'string'}, 'schema': {'type': 'string', 'const': 'compose-preview/ui-builder-forked/v1'}, 'summary': {'type': 'string'}, 'designId': {'type': 'string'}, 'revision': {'type': 'integer'}, 'forkedFrom': {'type': 'object', 'required': ['designId', 'revision', 'documentDigest'], 'properties': {'designId': {'type': 'string'}, 'revision': {'type': 'integer'}, 'documentDigest': {'type': 'string'}}, 'additionalProperties': False}, 'ancestryRecorded': {'type': 'boolean'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', 'required': ['designId'], 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'designId': {'type': 'string'}, 'revision': {'type': 'integer', 'description': 'A past revision. Omit for the current one.'}, 'includeCatalog': {'type': 'boolean', 'description': "Embed the pinned catalog's whole CatalogCapabilityV1 in the snapshot, as the released shape does. Defaults to false."}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'required': ['designId'], 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'designId': {'type': 'string'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'required': ['designId'], 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'designId': {'type': 'string'}, 'revision': {'type': 'integer', 'description': 'A past revision. Omit for the current one.'}, 'includeExport': {'type': 'boolean', 'description': 'Include the Compose export. Defaults to true.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'required': ['schema', 'summary', 'designId', 'revision', 'implementsRevision'], 'properties': {'links': {'anyOf': [{'type': 'object', 'properties': {'pr': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'issue': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'thread': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'designId': {'type': 'string'}, 'previous': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'reference': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'schemaVersion': {'type': 'integer'}, 'updatedAtEpochMillis': {'type': 'integer'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'export': {'anyOf': [{'type': 'object', 'required': ['format', 'ok'], 'properties': {'ok': {'type': 'boolean'}, 'format': {'type': 'string'}, 'source': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'diagnostics': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}, {'type': 'null'}]}, 'schema': {'type': 'string', 'const': 'compose-preview/ui-builder-implementation/v1'}, 'summary': {'type': 'string'}, 'designId': {'type': 'string'}, 'revision': {'type': 'integer'}, 'implementation': {'anyOf': [{'type': 'object', 'required': ['pr', 'status', 'updatedBy'], 'properties': {'pr': {'type': 'string'}, 'status': {'type': 'string'}, 'revision': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'updatedBy': {'type': 'string'}, 'previewMatch': {'anyOf': [{'type': 'object', 'required': ['status'], 'properties': {'note': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'status': {'type': 'string'}, 'evidence': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}, {'type': 'null'}]}, 'updatedAtEpochMillis': {'type': 'integer'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'latestDecision': {'anyOf': [{'type': 'object', 'required': ['decisionId', 'sequence', 'revision', 'verdict', 'decidedBy', 'deciderKind', 'decidedAtEpochMillis'], 'properties': {'note': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'verdict': {'type': 'string'}, 'revision': {'type': 'integer'}, 'sequence': {'type': 'integer'}, 'decidedBy': {'type': 'string'}, 'decisionId': {'type': 'string'}, 'deciderKind': {'type': 'string'}, 'displayName': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'decidedAtEpochMillis': {'type': 'integer'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'implementsRevision': {'type': 'boolean'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', 'required': ['designId'], 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'status': {'enum': ['open', 'merged', 'archived', 'all'], 'type': 'string', 'description': 'Only branches in this state. Defaults to all.'}, 'designId': {'type': 'string', 'description': 'The parent design.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'required': ['schema', 'designId', 'status', 'branches', 'summary'], 'properties': {'schema': {'type': 'string', 'const': 'compose-preview/ui-builder-branches/v1'}, 'status': {'type': 'string'}, 'summary': {'type': 'string'}, 'branches': {'type': 'array', 'items': {'type': 'object', 'required': ['branchId', 'parentDesignId', 'name', 'ownerActorId', 'status', 'forkRevision', 'forkDocumentHash', 'headRevision', 'commandCount', 'createdAtEpochMillis', 'summary'], 'properties': {'name': {'type': 'string'}, 'status': {'type': 'string'}, 'summary': {'type': 'string'}, 'branchId': {'type': 'string'}, 'commandCount': {'type': 'integer'}, 'forkRevision': {'type': 'integer'}, 'headRevision': {'type': 'integer'}, 'ownerActorId': {'type': 'string'}, 'parentDesignId': {'type': 'string'}, 'closedByActorId': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'forkDocumentHash': {'type': 'string'}, 'closedAtEpochMillis': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'createdAtEpochMillis': {'type': 'integer'}, 'supersededByBranchId': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'mergedAtParentRevision': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'designId': {'type': 'string'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', 'properties': {'full': {'type': 'boolean', 'description': 'The whole CatalogCapabilityV1 per catalog, as the released envelope. Defaults to false.'}, 'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'componentIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Only these components. Omit for all of them.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'required': ['designId'], 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'designId': {'type': 'string'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'description': 'Designs per page. Defaults to 50.'}, 'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'cursor': {'type': 'string', 'description': 'Continue a previous page.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'required': ['designId'], 'properties': {'limit': {'type': 'integer', 'maximum': 128, 'minimum': 1, 'description': 'Revisions per page. Defaults to 20.'}, 'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'before': {'type': 'integer', 'description': "Only revisions older than this one; pass the previous reply's `nextBefore`."}, 'designId': {'type': 'string'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'required': ['schema', 'designId', 'currentRevision', 'revisions', 'retention', 'summary'], 'properties': {'schema': {'type': 'string', 'const': 'compose-preview/ui-builder-revisions/v1'}, 'summary': {'type': 'string'}, 'designId': {'type': 'string'}, 'retention': {'type': 'object', 'required': ['retainedRevisions', 'maximumRevisions', 'minimumRevisions', 'maximumRevisionBytes', 'retainedOperations', 'note'], 'properties': {'note': {'type': 'string'}, 'maximumRevisions': {'type': 'integer'}, 'minimumRevisions': {'type': 'integer'}, 'retainedRevisions': {'type': 'integer'}, 'retainedOperations': {'type': 'integer'}, 'maximumRevisionBytes': {'type': 'integer'}, 'oldestRetainedRevision': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'revisions': {'type': 'array', 'items': {'type': 'object', 'required': ['revision', 'sequence', 'current', 'documentDigest', 'nodes', 'summary'], 'properties': {'nodes': {'type': 'integer'}, 'actorId': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'current': {'type': 'boolean'}, 'summary': {'type': 'string'}, 'revision': {'type': 'integer'}, 'sequence': {'type': 'integer'}, 'operation': {'anyOf': [{'type': 'object', 'required': ['operationId', 'kind', 'summary'], 'properties': {'kind': {'type': 'string'}, 'summary': {'type': 'string'}, 'clientId': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'mutations': {'type': 'array', 'items': {'type': 'string'}}, 'operationId': {'type': 'string'}, 'restoredRevision': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}}, 'additionalProperties': False}, {'type': 'null'}]}, 'documentDigest': {'type': 'string'}, 'updatedAtEpochMillis': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'nextBefore': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'currentRevision': {'type': 'integer'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', 'required': ['branchId'], 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'dryRun': {'type': 'boolean', 'description': 'Replay and report without writing anything. Defaults to false.'}, 'branchId': {'type': 'string'}, 'skipOperationIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Logged commands to leave out of the replay.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'required': ['schema', 'branchId', 'parentDesignId', 'dryRun', 'merged', 'forkRevision', 'parentRevisionBefore', 'parentRevisionAfter', 'commands', 'remaining', 'summary'], 'properties': {'dryRun': {'type': 'boolean'}, 'merged': {'type': 'boolean'}, 'schema': {'type': 'string', 'const': 'compose-preview/ui-builder-branch-merge/v1'}, 'summary': {'type': 'string'}, 'branchId': {'type': 'string'}, 'commands': {'type': 'array', 'items': {'type': 'object', 'required': ['operationId', 'actorId', 'status', 'baseRevision'], 'properties': {'code': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'field': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'nodeId': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'status': {'type': 'string'}, 'actorId': {'type': 'string'}, 'message': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'conflicts': {'type': 'array', 'items': {'type': 'object', 'required': ['code', 'overwrittenRevision'], 'properties': {'code': {'type': 'string'}, 'field': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'nodeId': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'explanation': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'overwrittenRevision': {'type': 'integer'}}, 'additionalProperties': False}}, 'operationId': {'type': 'string'}, 'baseRevision': {'type': 'integer'}, 'committedRevision': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'remaining': {'type': 'integer'}, 'forkRevision': {'type': 'integer'}, 'parentDesignId': {'type': 'string'}, 'archivedSiblingIds': {'type': 'array', 'items': {'type': 'string'}}, 'parentRevisionAfter': {'type': 'integer'}, 'skippedOperationIds': {'type': 'array', 'items': {'type': 'string'}}, 'parentRevisionBefore': {'type': 'integer'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', 'required': ['designId', 'operationId', 'baseRevision', 'sourceHome', 'targetHome'], 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'dryRun': {'type': 'boolean', 'description': "Validate and return the person's choices without changing anything."}, 'designId': {'type': 'string'}, 'sourceHome': {'anyOf': [{'type': 'null'}, {'oneOf': [{'type': 'object', 'required': ['kind', 'url', 'designId'], 'properties': {'url': {'type': 'string', 'minLength': 1}, 'kind': {'const': 'server'}, 'designId': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'path'], 'properties': {'kind': {'const': 'repo'}, 'path': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}]}], 'description': 'The exact current DesignHomeV1, or null when the design is unhomed.'}, 'targetHome': {'oneOf': [{'type': 'object', 'required': ['kind', 'url', 'designId'], 'properties': {'url': {'type': 'string', 'minLength': 1}, 'kind': {'const': 'server'}, 'designId': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'path'], 'properties': {'kind': {'const': 'repo'}, 'path': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}]}, 'operationId': {'type': 'string', 'description': 'Your stable id; makes a retry idempotent.'}, 'baseRevision': {'type': 'integer', 'description': 'The exact current revision read from the design.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}}}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'required': ['designId', 'body'], 'properties': {'x': {'type': 'number', 'description': 'Pin to a point on the frame, 0..1 across.'}, 'y': {'type': 'number', 'description': 'Pin to a point on the frame, 0..1 down.'}, 'body': {'type': 'string'}, 'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'markId': {'type': 'string', 'description': 'Pin to a markup stroke on the reference.'}, 'nodeId': {'type': 'string', 'description': 'Pin to a design node.'}, 'designId': {'type': 'string'}, 'threadId': {'type': 'string', 'description': 'Reply into this thread. Omit to start one.'}, 'displayName': {'type': 'string', 'description': 'The name to show beside your actor id.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'required': ['designId'], 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'designId': {'type': 'string'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'required': ['designId', 'assetKey', 'imageBase64'], 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'assetKey': {'type': 'string', 'description': "1 to 64 characters of letters, digits, '.', '_' or '-'; what the node's assetKey property names."}, 'designId': {'type': 'string'}, 'imageBase64': {'type': 'string', 'description': 'The image bytes, base64. At most 1 MiB decoded.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'required': ['designId', 'commentId', 'reaction'], 'properties': {'on': {'type': 'boolean', 'description': 'False takes your reaction back. Defaults to true.'}, 'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'designId': {'type': 'string'}, 'reaction': {'type': 'string', 'description': 'One emoji, at most 24 characters.'}, 'commentId': {'type': 'string', 'description': "The comment to react to, from its thread's `comments`."}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'required': ['designId', 'revision', 'verdict'], 'properties': {'note': {'type': 'string', 'description': 'Why, in a sentence or two.'}, 'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'verdict': {'enum': ['approve', 'reject'], 'type': 'string'}, 'designId': {'type': 'string'}, 'revision': {'type': 'integer', 'description': 'The revision the verdict is about.'}, 'decisionId': {'type': 'string', 'description': 'Your id for this decision; makes a retry idempotent.'}, 'displayName': {'type': 'string'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'required': ['schema', 'summary', 'designId', 'timedOut', 'sequence', 'approved'], 'properties': {'latest': {'anyOf': [{'type': 'object', 'required': ['decisionId', 'sequence', 'revision', 'verdict', 'decidedBy', 'deciderKind', 'decidedAtEpochMillis'], 'properties': {'note': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'verdict': {'type': 'string'}, 'revision': {'type': 'integer'}, 'sequence': {'type': 'integer'}, 'decidedBy': {'type': 'string'}, 'decisionId': {'type': 'string'}, 'deciderKind': {'type': 'string'}, 'displayName': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'decidedAtEpochMillis': {'type': 'integer'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'schema': {'type': 'string', 'const': 'compose-preview/ui-builder-decision/v1'}, 'summary': {'type': 'string'}, 'approved': {'type': 'boolean'}, 'designId': {'type': 'string'}, 'sequence': {'type': 'integer'}, 'timedOut': {'type': 'boolean'}, 'decisions': {'type': 'array', 'items': {'type': 'object', 'required': ['decisionId', 'sequence', 'revision', 'verdict', 'decidedBy', 'deciderKind', 'decidedAtEpochMillis'], 'properties': {'note': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'verdict': {'type': 'string'}, 'revision': {'type': 'integer'}, 'sequence': {'type': 'integer'}, 'decidedBy': {'type': 'string'}, 'decisionId': {'type': 'string'}, 'deciderKind': {'type': 'string'}, 'displayName': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'decidedAtEpochMillis': {'type': 'integer'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', 'required': ['designId', 'title'], 'properties': {'title': {'type': 'string'}, 'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'designId': {'type': 'string'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'required': ['designId'], 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'inline': {'type': 'boolean', 'description': 'Also return the PNG as an image block. Defaults to false; a host with no public origin always does.'}, 'themes': {'type': 'array', 'items': {'enum': ['light', 'dark'], 'type': 'string'}, 'description': "Defaults to the design's own theme."}, 'devices': {'type': 'array', 'items': {'anyOf': [{'enum': ['phone_small', 'phone', 'phone_landscape', 'foldable_folded', 'foldable_unfolded', 'tablet_portrait', 'tablet_landscape', 'wear_small_round', 'wear_large_round', 'wear_square', 'tv_1080p'], 'type': 'string'}, {'type': 'object', 'required': ['widthDp', 'heightDp'], 'properties': {'id': {'type': 'string'}, 'label': {'type': 'string'}, 'round': {'type': 'boolean'}, 'widthDp': {'type': 'integer', 'maximum': 4096, 'minimum': 1}, 'heightDp': {'type': 'integer', 'maximum': 4096, 'minimum': 1}, 'formFactor': {'type': 'string'}}, 'additionalProperties': False}]}, 'description': "Devices to draw. Omit for the form factor's defaults."}, 'designId': {'type': 'string'}, 'revision': {'type': 'integer', 'description': 'A past revision. Omit for the current one.'}, 'fontScales': {'type': 'array', 'items': {'type': 'number', 'maximum': 3.0, 'minimum': 0.5}, 'description': "Defaults to the design's own font scale."}, 'formFactor': {'enum': ['phone', 'foldable', 'tablet', 'wear', 'tv', 'adaptive'], 'type': 'string', 'description': 'A default device set, instead of `devices`.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'required': ['schema', 'summary', 'designId', 'revision', 'columns', 'rows', 'image', 'cells'], 'properties': {'rows': {'type': 'integer'}, 'cells': {'type': 'array', 'items': {'type': 'object', 'required': ['index', 'device', 'label', 'formFactor', 'widthDp', 'heightDp', 'theme', 'fontScale', 'x', 'y', 'width', 'height', 'rendered'], 'properties': {'x': {'type': 'integer'}, 'y': {'type': 'integer'}, 'index': {'type': 'integer'}, 'label': {'type': 'string'}, 'round': {'type': 'boolean'}, 'theme': {'type': 'string'}, 'width': {'type': 'integer'}, 'device': {'type': 'string'}, 'height': {'type': 'integer'}, 'problem': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'widthDp': {'type': 'integer'}, 'heightDp': {'type': 'integer'}, 'rendered': {'type': 'boolean'}, 'fontScale': {'type': 'number'}, 'formFactor': {'type': 'string'}}, 'additionalProperties': False}}, 'image': {'type': 'object', 'required': ['widthPx', 'heightPx', 'scale', 'sha256'], 'properties': {'url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'scale': {'type': 'number'}, 'sha256': {'type': 'string'}, 'widthPx': {'type': 'integer'}, 'heightPx': {'type': 'integer'}, 'mediaType': {'type': 'string'}, 'expiresAtEpochSeconds': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'schema': {'type': 'string', 'const': 'compose-preview/ui-builder-design-matrix/v1'}, 'columns': {'type': 'integer'}, 'summary': {'type': 'string'}, 'designId': {'type': 'string'}, 'revision': {'type': 'integer'}, 'imageBase64': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', 'required': ['designId'], 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'designId': {'type': 'string'}, 'revision': {'type': 'integer', 'description': 'A past revision. Omit for the current one.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'required': ['designId', 'operationId', 'baseRevision', 'document'], 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'dryRun': {'type': 'boolean', 'description': "Validate and return the person's choices without changing anything."}, 'designId': {'type': 'string'}, 'document': {'type': 'object', 'description': 'The complete replacement DesignDocumentV1, including the existing home.'}, 'operationId': {'type': 'string', 'description': 'Your stable id; makes a retry idempotent.'}, 'baseRevision': {'type': 'integer', 'description': 'The exact current revision being replaced.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'required': ['designId', 'threadId'], 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'designId': {'type': 'string'}, 'resolved': {'type': 'boolean', 'description': 'Defaults to true.'}, 'threadId': {'type': 'string'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'required': ['designId', 'revision', 'baseRevision'], 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'dryRun': {'type': 'boolean', 'description': 'Return the diff without restoring. Defaults to false.'}, 'designId': {'type': 'string'}, 'revision': {'type': 'integer', 'description': 'The retained revision to restore.'}, 'operationId': {'type': 'string', 'description': 'Makes a retry idempotent. Defaults to a fresh id.'}, 'baseRevision': {'type': 'integer', 'description': "The design's current revision, from ui_builder_get_design or ui_builder_list_revisions."}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'required': ['schema', 'designId', 'revision', 'baseRevision', 'currentRevision', 'dryRun', 'applied', 'stale', 'diff', 'summary'], 'properties': {'diff': {'type': 'object', 'required': ['a', 'b', 'identical', 'summary', 'counts'], 'properties': {'a': {'type': 'object', 'required': ['designId', 'revision', 'title', 'documentDigest'], 'properties': {'title': {'type': 'string'}, 'designId': {'type': 'string'}, 'revision': {'type': 'integer'}, 'documentDigest': {'type': 'string'}}, 'additionalProperties': False}, 'b': {'type': 'object', 'required': ['designId', 'revision', 'title', 'documentDigest'], 'properties': {'title': {'type': 'string'}, 'designId': {'type': 'string'}, 'revision': {'type': 'integer'}, 'documentDigest': {'type': 'string'}}, 'additionalProperties': False}, 'nodes': {'type': 'array', 'items': {'type': 'object', 'required': ['nodeId', 'change', 'componentId', 'path'], 'properties': {'to': {'anyOf': [{'type': 'object', 'required': ['index'], 'properties': {'slot': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'index': {'type': 'integer'}, 'parentId': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}, {'type': 'null'}]}, 'from': {'anyOf': [{'type': 'object', 'required': ['index'], 'properties': {'slot': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'index': {'type': 'integer'}, 'parentId': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}, {'type': 'null'}]}, 'path': {'type': 'string'}, 'change': {'type': 'string'}, 'fields': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'after': {'anyOf': [{}, {'type': 'null'}]}, 'before': {'anyOf': [{}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'nodeId': {'type': 'string'}, 'modifiers': {'anyOf': [{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'after': {'anyOf': [{}, {'type': 'null'}]}, 'before': {'anyOf': [{}, {'type': 'null'}]}}, 'additionalProperties': False}, {'type': 'null'}]}, 'beforePath': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'properties': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'after': {'anyOf': [{}, {'type': 'null'}]}, 'before': {'anyOf': [{}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'componentId': {'type': 'string'}}, 'additionalProperties': False}}, 'counts': {'type': 'object', 'required': ['added', 'removed', 'moved', 'changed', 'document'], 'properties': {'added': {'type': 'integer'}, 'moved': {'type': 'integer'}, 'changed': {'type': 'integer'}, 'removed': {'type': 'integer'}, 'document': {'type': 'integer'}}, 'additionalProperties': False}, 'schema': {'type': 'string'}, 'summary': {'type': 'string'}, 'document': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'after': {'anyOf': [{}, {'type': 'null'}]}, 'before': {'anyOf': [{}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'identical': {'type': 'boolean'}, 'truncated': {'type': 'boolean'}}, 'additionalProperties': False}, 'stale': {'type': 'boolean'}, 'dryRun': {'type': 'boolean'}, 'schema': {'type': 'string', 'const': 'compose-preview/ui-builder-restore/v1'}, 'applied': {'type': 'boolean'}, 'summary': {'type': 'string'}, 'designId': {'type': 'string'}, 'revision': {'type': 'integer'}, 'operationId': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'baseRevision': {'type': 'integer'}, 'documentDigest': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'currentRevision': {'type': 'integer'}, 'committedRevision': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', 'required': ['query'], 'properties': {'query': {'type': 'string', 'description': "Text to look for in a component's id, role or traits."}, 'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'catalog': {'type': 'string', 'description': 'Only this catalog system id. Omit to search every catalog.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'required': ['designId'], 'properties': {'pr': {'type': 'string', 'description': 'The pull request URL.'}, 'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'status': {'enum': ['draft', 'open', 'merged', 'closed'], 'type': 'string', 'description': 'Defaults to open.'}, 'designId': {'type': 'string'}, 'revision': {'type': 'integer', 'description': 'The design revision the PR implements.'}, 'previewMatch': {'type': 'object', 'required': ['status'], 'properties': {'note': {'type': 'string'}, 'status': {'enum': ['match', 'mismatch', 'unknown'], 'type': 'string'}, 'evidence': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'required': ['designId'], 'properties': {'pr': {'type': 'string', 'description': 'The pull request that implemented it.'}, 'issue': {'type': 'string', 'description': 'The tracker issue this design is for.'}, 'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'thread': {'type': 'string', 'description': "A permalink to a discussion held elsewhere, such as a chat thread. It does not replace this server's comments for a server-homed design: keep that discussion on the design."}, 'designId': {'type': 'string'}, 'previous': {'type': 'string', 'description': 'The design id on this host that this one continues.'}, 'reference': {'type': 'string', 'description': 'The frame in the design tool it reproduces.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'required': ['designId'], 'properties': {'name': {'type': 'string', 'description': 'What the editor calls it. An `@2x` suffix declares the density.'}, 'clear': {'type': 'boolean', 'description': 'Remove the reference, its marks and pieces instead.'}, 'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'density': {'type': 'number', 'description': "The picture's pixels per dp, e.g. 2 for a 2x export, 2.625 for a Pixel screenshot."}, 'designId': {'type': 'string'}, 'sourceUrl': {'type': 'string', 'description': 'Where it came from, such as the Figma frame URL. Provenance only; never fetched.'}, 'imageBase64': {'type': 'string', 'description': "The picture, base64. PNG, JPEG, WebP or SVG; at most the host's reference size limit."}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'required': ['schema', 'designId', 'attached'], 'properties': {'facts': {'anyOf': [{'type': 'object', 'required': ['widthPx', 'heightPx', 'density', 'densitySource', 'widthDp', 'heightDp', 'frameWidthDp', 'frameHeightDp', 'designDensity', 'kind', 'fit', 'pixelComparable', 'advice'], 'properties': {'fit': {'type': 'string'}, 'kind': {'type': 'string'}, 'advice': {'type': 'string'}, 'density': {'type': 'number'}, 'widthDp': {'type': 'integer'}, 'widthPx': {'type': 'integer'}, 'heightDp': {'type': 'integer'}, 'heightPx': {'type': 'integer'}, 'frameWidthDp': {'type': 'integer'}, 'densityBucket': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'densitySource': {'type': 'string'}, 'designDensity': {'type': 'number'}, 'frameHeightDp': {'type': 'integer'}, 'recommendedFit': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'pixelComparable': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'notes': {'type': 'array', 'items': {'type': 'string'}}, 'schema': {'type': 'string', 'const': 'compose-ui-builder-reference-attached/v1'}, 'attached': {'type': 'boolean'}, 'designId': {'type': 'string'}, 'reference': {'anyOf': [{'type': 'object', 'required': ['name', 'mediaType', 'widthPx', 'heightPx'], 'properties': {'name': {'type': 'string'}, 'widthPx': {'type': 'integer'}, 'heightPx': {'type': 'integer'}, 'mediaType': {'type': 'string'}, 'sourceUrl': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}, {'type': 'null'}]}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', 'required': ['designId', 'actorId'], 'properties': {'role': {'type': 'string', 'description': 'editor or viewer. Defaults to viewer.'}, 'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'revoke': {'type': 'boolean', 'description': "Take this actor's access away instead."}, 'actorId': {'type': 'string', 'description': 'Who to share with, e.g. github:octocat.'}, 'designId': {'type': 'string'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object'}
Esquema de entrada
{'type': 'object', 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'designId': {'type': 'string', 'description': 'A stored design to check, or to check `operations` against.'}, 'document': {'type': 'object', 'description': 'A whole DesignDocumentV1 to check.'}, 'operations': {'type': 'array', 'items': {'type': 'object'}, 'description': "DesignMutationV1 objects to check against `designId`'s current document, as ui_builder_apply takes them."}, 'baseRevision': {'type': 'integer', 'description': 'The revision the operations were written against; a stale one is reported as a warning.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'required': ['schema', 'valid', 'problems'], 'properties': {'valid': {'type': 'boolean'}, 'schema': {'type': 'string', 'const': 'compose-preview/ui-builder-validation/v1'}, 'designId': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'problems': {'type': 'array', 'items': {'type': 'object', 'required': ['source', 'code', 'message'], 'properties': {'code': {'type': 'string'}, 'field': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'nodeId': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'source': {'type': 'string'}, 'message': {'type': 'string'}, 'severity': {'type': 'string'}, 'operationIndex': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'revision': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', 'required': ['designId'], 'properties': {'token': {'type': 'string', 'description': 'A grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.'}, 'inline': {'type': 'boolean', 'description': 'Also return the PNG as an image block. Defaults to false; a host with no public origin always does.'}, 'include': {'type': 'array', 'items': {'enum': ['reference', 'bounds', 'selection', 'comments'], 'type': 'string'}, 'description': 'Overlays to draw. Defaults to comments, reference, selection; [] draws the bare frame.'}, 'designId': {'type': 'string'}, 'renderer': {'enum': ['export', 'native'], 'type': 'string', 'description': 'Defaults to export.'}, 'revision': {'type': 'integer', 'description': 'A past revision. Omit for the current one.'}, 'viewport': {'type': 'object', 'required': ['width', 'height'], 'properties': {'width': {'type': 'integer', 'maximum': 4096, 'minimum': 1}, 'height': {'type': 'integer', 'maximum': 4096, 'minimum': 1}}, 'description': "Fit the picture inside this many pixels, keeping its aspect ratio. Omit for the render's own size.", 'additionalProperties': False}, 'selection': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Node ids to show as selected.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'required': ['schema', 'designId', 'revision', 'renderer', 'include', 'selection', 'image', 'frame'], 'properties': {'frame': {'type': 'object', 'required': ['widthDp', 'heightDp', 'density', 'renderWidthPx', 'renderHeightPx'], 'properties': {'density': {'type': 'number'}, 'widthDp': {'type': 'integer'}, 'heightDp': {'type': 'integer'}, 'renderWidthPx': {'type': 'integer'}, 'renderHeightPx': {'type': 'integer'}}, 'additionalProperties': False}, 'image': {'type': 'object', 'required': ['widthPx', 'heightPx', 'scale', 'sha256'], 'properties': {'url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'scale': {'type': 'number'}, 'sha256': {'type': 'string'}, 'widthPx': {'type': 'integer'}, 'heightPx': {'type': 'integer'}, 'mediaType': {'type': 'string'}, 'expiresAtEpochSeconds': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'nodes': {'type': 'array', 'items': {'type': 'object', 'required': ['nodeId', 'x', 'y', 'width', 'height'], 'properties': {'x': {'type': 'integer'}, 'y': {'type': 'integer'}, 'width': {'type': 'integer'}, 'height': {'type': 'integer'}, 'nodeId': {'type': 'string'}, 'selected': {'type': 'boolean'}, 'componentId': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'notes': {'type': 'array', 'items': {'type': 'string'}}, 'schema': {'type': 'string', 'const': 'compose-preview/ui-builder-view/v1'}, 'include': {'type': 'array', 'items': {'type': 'string'}}, 'comments': {'type': 'array', 'items': {'type': 'object', 'required': ['threadId', 'number', 'resolved', 'anchor', 'placed', 'comments'], 'properties': {'x': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'y': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'anchor': {'type': 'string'}, 'author': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'markId': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'nodeId': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'number': {'type': 'integer'}, 'placed': {'type': 'boolean'}, 'comments': {'type': 'integer'}, 'resolved': {'type': 'boolean'}, 'threadId': {'type': 'string'}, 'firstComment': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'designId': {'type': 'string'}, 'renderer': {'type': 'string'}, 'revision': {'type': 'integer'}, 'reference': {'anyOf': [{'type': 'object', 'required': ['drawn', 'visible', 'mode', 'opacityPercent'], 'properties': {'mode': {'type': 'string'}, 'drawn': {'type': 'boolean'}, 'reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'visible': {'type': 'boolean'}, 'opacityPercent': {'type': 'integer'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'selection': {'type': 'array', 'items': {'type': 'string'}}, 'imageBase64': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'boundsUnavailable': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}
Cambios recientes en herramientas
Servidores MCP similares
GripForge
Generates, rigs, animates, analyzes, and packages game characters, weapons, armor, effects, environments, and engine-ready assets.
spriteship
Generates and manages 2D game characters, assets, animations, tilesets, UI packs, maps, and engine-ready exports for multiple gam…
Blixtworks
Offers pay-per-call utilities for text, image processing and analysis, data conversion, validation, web inspection, cryptography,…
arch-tools-mcp
Provides general-purpose agent APIs for browser automation, web and PDF extraction, data conversion, email operations, fact check…
kernelcad
Authors, evaluates, reviews, simulates, edits, and exports parametric CAD assemblies and geometry from editable TypeScript-based …
floot
Creates, edits, previews, databases, and publishes full-stack web and mobile applications with hosted resources and deployment wo…
Raven
Supports coding agents with design audits, design-system guidance, and a configurable visual preference profile.
mcp
Creates and edits data architecture diagrams with tables, data flows, column lineage, grouping, validation, and PNG export.