このMCPでできること
Provides captured product screens, screenshots, measured design guides, UI comparisons, and implementation handoff prompts.
ツール
入力スキーマ
{'type': 'object', 'required': ['referenceId'], 'properties': {'goal': {'type': 'string', 'description': 'What you want to build. Goes at the top of the prompt.'}, 'stack': {'type': 'string', 'description': 'Preferred stack, e.g. Next.js and Tailwind.'}, 'screens': {'type': 'string', 'description': 'Comma-separated screen ids to keep. Omit to include every screen in the reference.'}, 'referenceId': {'type': 'string', 'description': 'e.g. linear-onboarding, stripe-collection or vercel-marketing-pricing.'}, 'includeDesign': {'type': 'boolean', 'default': True, 'description': "Include the observed design guide. Set false to use your project's own design system."}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', 'properties': {'prompt': {'type': 'string', 'description': 'Markdown prompt to follow or paste into an agent.'}, 'manifest': {'type': 'object', 'description': 'Versioned reference manifest'}}}
入力スキーマ
{'type': 'object', 'required': ['description'], 'properties': {'kind': {'enum': ['flow', 'marketing', 'product'], 'type': 'string', 'description': 'Only compare with this kind of capture.'}, 'limit': {'type': 'number', 'default': 4, 'description': 'How many references to return, 1 to 5.'}, 'product': {'type': 'string', 'description': 'Only compare with this product id.'}, 'flowType': {'enum': ['signup-onboarding', 'search', 'checkout', 'booking', 'marketplace'], 'type': 'string', 'description': 'What the flow does, so step counts are only compared with flows of the same kind. Inferred from screenType when omitted.'}, 'sections': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Page sections top to bottom, e.g. ["Hero", "Plan cards", "FAQ"].'}, 'flowSteps': {'type': 'array', 'items': {'type': 'string'}, 'description': 'For a multi-screen flow, each step\'s title in order, e.g. ["Sign up", "Verify email", "Create workspace"].'}, 'planCount': {'type': 'number', 'description': 'For pricing screens, how many plans are shown.'}, 'screenType': {'enum': ['landing', 'pricing', 'feature-page', 'sign-up', 'sign-in', 'verification', 'onboarding-step', 'plan-picker', 'empty-state', 'dashboard', 'list', 'detail', 'create-form', 'search', 'picker', 'booking', 'checkout', 'marketplace', 'settings', 'docs', 'menu', 'lesson'], 'type': 'string', 'description': 'What kind of screen it is.'}, 'description': {'type': 'string', 'description': 'One or two sentences on what the screen is for and how it is laid out, e.g. "Pricing page with three plan cards, a monthly/yearly toggle and a feature table".'}, 'primaryAction': {'type': 'string', 'description': 'The main button or action, e.g. "Start free trial".'}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', 'properties': {'next': {'type': 'string'}, 'report': {'type': 'string', 'description': 'Markdown summary of the comparison.'}, 'references': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'why': {'type': 'string'}, 'kind': {'enum': ['flow', 'marketing', 'product'], 'type': 'string', 'description': 'flow is an onboarding step, marketing a public web page, product an in-app screen.'}, 'facts': {'type': 'array', 'items': {'type': 'string'}}, 'notes': {'type': 'string'}, 'title': {'type': 'string'}, 'product': {'type': 'string'}, 'imageUrl': {'type': 'string'}, 'previewUrl': {'type': 'string'}, 'screenType': {'type': 'string'}, 'productName': {'type': 'string', 'description': 'Present on pick options.'}}}}}}
入力スキーマ
{'type': 'object', 'required': ['screenA'], 'properties': {'focus': {'enum': ['layout', 'sections', 'actions', 'dimensions', 'typography', 'all'], 'type': 'string', 'default': 'all', 'description': 'What aspects to emphasize in the comparison.'}, 'screenA': {'type': 'string', 'description': 'First screen id to compare, e.g. linear-marketing-pricing.'}, 'screenB': {'type': 'string', 'description': 'Second screen id to compare. If omitted, provide targetDescription instead.'}, 'targetDescription': {'type': 'string', 'description': 'Instead of screenB, describe what you\'re building to see how screenA matches, e.g. "Pricing page with 3 tiers and a feature comparison table".'}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', 'properties': {'report': {'type': 'string', 'description': 'Markdown summary of the comparison between the two screens.'}, 'screenA': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'kind': {'enum': ['flow', 'marketing', 'product'], 'type': 'string', 'description': 'flow is an onboarding step, marketing a public web page, product an in-app screen.'}, 'title': {'type': 'string'}, 'width': {'type': 'integer'}, 'height': {'type': 'integer'}, 'product': {'type': 'string'}, 'imageUrl': {'type': 'string'}, 'previewUrl': {'type': 'string'}, 'screenType': {'type': 'string'}, 'actionCount': {'type': 'integer'}, 'productName': {'type': 'string'}, 'sectionCount': {'type': 'integer'}}, 'description': 'Details about the first screen.'}, 'screenB': {'type': 'object', 'nullable': True, 'properties': {'id': {'type': 'string'}, 'kind': {'enum': ['flow', 'marketing', 'product'], 'type': 'string', 'description': 'flow is an onboarding step, marketing a public web page, product an in-app screen.'}, 'title': {'type': 'string'}, 'width': {'type': 'integer'}, 'height': {'type': 'integer'}, 'product': {'type': 'string'}, 'imageUrl': {'type': 'string'}, 'previewUrl': {'type': 'string'}, 'screenType': {'type': 'string'}, 'actionCount': {'type': 'integer'}, 'productName': {'type': 'string'}, 'sectionCount': {'type': 'integer'}}, 'description': 'Details about the second screen (null if comparing against targetDescription).'}, 'differences': {'type': 'array', 'items': {'type': 'string'}, 'description': 'How the two screens differ.'}, 'observations': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Design observations and takeaways from the comparison.'}, 'similarities': {'type': 'array', 'items': {'type': 'string'}, 'description': 'What the two screens have in common.'}, 'targetDescription': {'type': 'string', 'description': 'The target description if comparing against text instead of screenB.'}}}
入力スキーマ
{'type': 'object', 'required': ['productId'], 'properties': {'context': {'enum': ['marketing', 'product'], 'type': 'string', 'description': 'Which surface to return. Omit for both.'}, 'productId': {'type': 'string', 'description': 'Product id from listProducts, e.g. linear, stripe or airbnb.'}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', 'properties': {'font': {'type': 'string'}, 'product': {'type': 'string'}, 'summary': {'type': 'string'}, 'contexts': {'type': 'object', 'additionalProperties': {'type': 'object', 'properties': {'type': {'type': 'array', 'items': {'type': 'object'}}, 'theme': {'type': 'string'}, 'layout': {'type': 'array', 'items': {'type': 'string'}}, 'palette': {'type': 'array', 'items': {'type': 'object'}}, 'components': {'type': 'array', 'items': {'type': 'string'}}}}}}}
入力スキーマ
{'type': 'object', 'required': ['productId'], 'properties': {'productId': {'type': 'string', 'description': 'Product id from listProducts, e.g. linear, stripe or airbnb.'}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', 'properties': {'steps': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'notes': {'type': 'string'}, 'title': {'type': 'string'}, 'branch': {'type': 'boolean', 'description': 'True if this step is an alternate path'}, 'imageUrl': {'type': 'string'}, 'previewUrl': {'type': 'string'}, 'transitions': {'type': 'array', 'items': {'type': 'object', 'properties': {'to': {'type': 'string', 'description': 'Where this action leads.'}, 'action': {'type': 'string', 'description': 'The button or link text.'}}}}}}}, 'captured': {'type': 'string', 'format': 'date'}, 'flowType': {'enum': ['signup-onboarding', 'search', 'checkout', 'booking', 'marketplace'], 'type': 'string'}, 'flowTitle': {'type': 'string'}, 'handoffId': {'type': 'string', 'description': 'Use with buildHandoff to get the full prompt.'}, 'productId': {'type': 'string'}, 'productName': {'type': 'string'}}}
入力スキーマ
{'type': 'object', 'required': ['productId'], 'properties': {'productId': {'type': 'string', 'description': 'Product id from listProducts, e.g. linear, stripe or airbnb.'}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string'}, 'name': {'type': 'string'}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'counts': {'type': 'object', 'properties': {'flow': {'type': 'integer'}, 'product': {'type': 'integer'}, 'marketing': {'type': 'integer'}}}, 'source': {'type': 'string'}, 'screens': {'type': 'object', 'properties': {'flow': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'kind': {'enum': ['flow', 'marketing', 'product'], 'type': 'string', 'description': 'flow is an onboarding step, marketing a public web page, product an in-app screen.'}, 'notes': {'type': 'string'}, 'title': {'type': 'string'}, 'product': {'type': 'string'}, 'imageUrl': {'type': 'string'}, 'previewUrl': {'type': 'string', 'description': 'Screen-sized preview (the top of long pages). Present on pick options.'}, 'productName': {'type': 'string', 'description': 'Present on pick options.'}}}}, 'product': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'kind': {'enum': ['flow', 'marketing', 'product'], 'type': 'string', 'description': 'flow is an onboarding step, marketing a public web page, product an in-app screen.'}, 'notes': {'type': 'string'}, 'title': {'type': 'string'}, 'product': {'type': 'string'}, 'imageUrl': {'type': 'string'}, 'previewUrl': {'type': 'string', 'description': 'Screen-sized preview (the top of long pages). Present on pick options.'}, 'productName': {'type': 'string', 'description': 'Present on pick options.'}}}}, 'marketing': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'kind': {'enum': ['flow', 'marketing', 'product'], 'type': 'string', 'description': 'flow is an onboarding step, marketing a public web page, product an in-app screen.'}, 'notes': {'type': 'string'}, 'title': {'type': 'string'}, 'product': {'type': 'string'}, 'imageUrl': {'type': 'string'}, 'previewUrl': {'type': 'string', 'description': 'Screen-sized preview (the top of long pages). Present on pick options.'}, 'productName': {'type': 'string', 'description': 'Present on pick options.'}}}}}}, 'captured': {'type': 'string', 'format': 'date'}, 'coverage': {'type': 'string'}, 'handoffs': {'type': 'array', 'items': {'type': 'string'}}, 'flowTitle': {'type': 'string'}, 'captureNote': {'type': 'string'}, 'description': {'type': 'string'}}}
入力スキーマ
{'type': 'object', 'required': ['screenId'], 'properties': {'screenId': {'type': 'string', 'description': 'Screen id from searchScreens or getProduct, e.g. linear-signup.'}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'kind': {'enum': ['flow', 'marketing', 'product'], 'type': 'string', 'description': 'flow is an onboarding step, marketing a public web page, product an in-app screen.'}, 'notes': {'type': 'string'}, 'title': {'type': 'string'}, 'width': {'type': 'integer'}, 'branch': {'type': 'boolean'}, 'height': {'type': 'integer'}, 'source': {'type': 'string'}, 'actions': {'type': 'array', 'items': {'type': 'object', 'properties': {'to': {'type': 'string'}, 'label': {'type': 'string'}, 'region': {'type': 'object', 'properties': {'x': {'type': 'number'}, 'y': {'type': 'number'}, 'width': {'type': 'number'}, 'height': {'type': 'number'}}, 'description': 'Hotspot position as percentages of the image.'}}}}, 'product': {'type': 'string'}, 'captured': {'type': 'string', 'format': 'date'}, 'imageUrl': {'type': 'string'}, 'sections': {'type': 'array', 'items': {'type': 'object', 'properties': {'y': {'type': 'integer'}, 'title': {'type': 'string'}}}}, 'previewUrl': {'type': 'string'}, 'productName': {'type': 'string', 'description': 'Present on pick options.'}}}
入力スキーマ
{'type': 'object', 'required': ['screenId'], 'properties': {'size': {'enum': ['preview', 'full'], 'type': 'string', 'default': 'preview', 'description': 'preview (default) keeps images small enough to view; full returns the original capture.'}, 'screenId': {'type': 'string', 'description': 'Screen id from searchScreens or getProduct, e.g. linear-signup.'}}, 'additionalProperties': False}
入力スキーマ
{'type': 'object', 'required': [], 'properties': {'flowType': {'enum': ['signup-onboarding', 'search', 'checkout', 'booking', 'marketplace'], 'type': 'string', 'description': 'Only return flows of this type.'}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', 'properties': {'flows': {'type': 'array', 'items': {'type': 'object', 'properties': {'flowType': {'enum': ['signup-onboarding', 'search', 'checkout', 'booking', 'marketplace'], 'type': 'string', 'description': 'What the flow accomplishes.'}, 'flowTitle': {'type': 'string', 'description': 'Human-readable title for the flow'}, 'handoffId': {'type': 'string', 'description': 'Use with buildHandoff'}, 'productId': {'type': 'string'}, 'stepCount': {'type': 'integer', 'description': 'Total steps including branches.'}, 'branchCount': {'type': 'integer', 'description': 'Steps that are alternate branches (not the main path).'}, 'productName': {'type': 'string'}}}}, 'total': {'type': 'integer'}}}
入力スキーマ
{'type': 'object', 'required': [], 'properties': {}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', 'properties': {'products': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string'}, 'name': {'type': 'string'}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'counts': {'type': 'object', 'properties': {'flow': {'type': 'integer'}, 'product': {'type': 'integer'}, 'marketing': {'type': 'integer'}}}, 'source': {'type': 'string'}, 'captured': {'type': 'string', 'format': 'date'}, 'description': {'type': 'string'}}}}}}
入力スキーマ
{'type': 'object', 'required': [], 'properties': {'q': {'type': 'string', 'description': 'Search words, e.g. "pricing page", "onboarding", "empty state". The best matches become the options.'}, 'goal': {'type': 'string', 'description': 'What the user is building, shown on the page and used in the build prompt, e.g. "NSDR premium upgrade page".'}, 'kind': {'enum': ['flow', 'marketing', 'product'], 'type': 'string', 'description': 'Only search this kind of screen.'}, 'count': {'type': 'number', 'default': 3, 'description': 'How many options to show when searching, 2 to 6.'}, 'stack': {'type': 'string', 'description': 'Preferred stack for the build prompt.'}, 'product': {'type': 'string', 'description': 'Only search this product id.'}, 'screens': {'type': 'string', 'description': 'Comma-separated screen ids to show instead of searching, e.g. from an earlier searchScreens.'}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', 'properties': {'url': {'type': 'string', 'description': 'Open this for the user.'}, 'next': {'type': 'string', 'description': 'What to do next.'}, 'pickId': {'type': 'string'}, 'status': {'enum': ['pending'], 'type': 'string'}, 'options': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'kind': {'enum': ['flow', 'marketing', 'product'], 'type': 'string', 'description': 'flow is an onboarding step, marketing a public web page, product an in-app screen.'}, 'notes': {'type': 'string'}, 'title': {'type': 'string'}, 'product': {'type': 'string'}, 'imageUrl': {'type': 'string'}, 'previewUrl': {'type': 'string', 'description': 'Screen-sized preview (the top of long pages). Present on pick options.'}, 'productName': {'type': 'string', 'description': 'Present on pick options.'}}}}, 'canvasUrl': {'type': 'string', 'description': 'Experimental pan-and-zoom canvas view of the same pick.'}}}
入力スキーマ
{'type': 'object', 'required': [], 'properties': {'q': {'type': 'string', 'description': 'Keywords to match, e.g. "pricing page", "empty state", "onboarding". Omit to list everything that matches the filters.'}, 'kind': {'enum': ['flow', 'marketing', 'product'], 'type': 'string', 'description': 'Only return this kind of screen.'}, 'limit': {'type': 'number', 'default': 20, 'description': 'Maximum results, 1 to 50.'}, 'product': {'type': 'string', 'description': 'Only return screens from this product id, e.g. linear, stripe, airbnb.'}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', 'properties': {'total': {'type': 'integer'}, 'screens': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'kind': {'enum': ['flow', 'marketing', 'product'], 'type': 'string', 'description': 'flow is an onboarding step, marketing a public web page, product an in-app screen.'}, 'notes': {'type': 'string'}, 'title': {'type': 'string'}, 'product': {'type': 'string'}, 'imageUrl': {'type': 'string'}, 'previewUrl': {'type': 'string', 'description': 'Screen-sized preview (the top of long pages). Present on pick options.'}, 'productName': {'type': 'string', 'description': 'Present on pick options.'}}}}}}
入力スキーマ
{'type': 'object', 'required': ['pickId'], 'properties': {'wait': {'type': 'number', 'default': 45, 'description': 'Seconds to wait for a choice, 0 to 50.'}, 'pickId': {'type': 'string', 'description': 'The pickId returned by pickReference.'}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', 'properties': {'choice': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'kind': {'enum': ['flow', 'marketing', 'product'], 'type': 'string', 'description': 'flow is an onboarding step, marketing a public web page, product an in-app screen.'}, 'notes': {'type': 'string'}, 'title': {'type': 'string'}, 'width': {'type': 'integer'}, 'branch': {'type': 'boolean'}, 'height': {'type': 'integer'}, 'source': {'type': 'string'}, 'actions': {'type': 'array', 'items': {'type': 'object', 'properties': {'to': {'type': 'string'}, 'label': {'type': 'string'}, 'region': {'type': 'object', 'properties': {'x': {'type': 'number'}, 'y': {'type': 'number'}, 'width': {'type': 'number'}, 'height': {'type': 'number'}}, 'description': 'Hotspot position as percentages of the image.'}}}}, 'product': {'type': 'string'}, 'captured': {'type': 'string', 'format': 'date'}, 'imageUrl': {'type': 'string'}, 'sections': {'type': 'array', 'items': {'type': 'object', 'properties': {'y': {'type': 'integer'}, 'title': {'type': 'string'}}}}, 'previewUrl': {'type': 'string'}, 'productName': {'type': 'string', 'description': 'Present on pick options.'}}}, 'pickId': {'type': 'string'}, 'prompt': {'type': 'string', 'description': 'Build prompt for the chosen reference.'}, 'status': {'enum': ['pending', 'chosen', 'dismissed'], 'type': 'string'}, 'message': {'type': 'string'}}}
最近のツール変更
類似のMCPサーバー
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,…
Compose Preview Catalogs
Browses, renders, compares, audits, and edits Jetpack Compose preview catalogs and associated UI designs.
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.