Raven
Qué hace este MCP
Supports coding agents with design audits, design-system guidance, and a configurable visual preference profile.
Herramientas
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['pages'], 'properties': {'pages': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'html'], 'properties': {'html': {'type': 'string', 'minLength': 1, 'description': 'Full HTML source for the page, including any <style> blocks.'}, 'name': {'type': 'string', 'minLength': 1, 'description': 'Page route or label (e.g. "/", "/changelog", "get-started").'}}, 'additionalProperties': False}, 'minItems': 2, 'description': 'At least 2 pages to compare. Each entry is {name, html}.'}, 'hero_token': {'type': 'string', 'description': 'Canonical hero heading class signature (e.g. "text-display-xl" or "64"). When supplied, hero divergence is measured against this token rather than the corpus modal.'}, 'container_token': {'type': 'number', 'description': "Project's canonical container width in px (e.g. 1152). When supplied, container divergence is measured against this token rather than the corpus modal."}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['items'], 'properties': {'goals': {'type': 'array', 'items': {'type': 'string'}, 'description': "Optional content goals (e.g. ['clarity','conversion']); recorded for traceability."}, 'items': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'text'], 'properties': {'id': {'type': 'string', 'description': 'Optional stable id; auto-generated (item_N) if omitted.'}, 'text': {'type': 'string', 'description': 'The raw content string to evaluate.'}, 'type': {'enum': ['prose', 'caption', 'heading', 'outcome', 'metric', 'cta', 'label'], 'type': 'string', 'description': 'Content type — selects which heuristics apply.'}}, 'additionalProperties': False}, 'description': 'Array of content items to audit.'}, 'system': {'type': 'string', 'description': "Optional content-system id (e.g. 'ux-writing'); recorded for traceability."}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'url': {'type': 'string', 'description': 'URL to render and measure (http/https or file://)'}, 'screenshot': {'type': 'string', 'description': 'Optional base64 PNG for caller reference; ratios are computed from the DOM, not pixels'}, 'dom_snapshot': {'type': 'array', 'items': {'type': 'object', 'required': ['selector', 'color', 'bgColor'], 'properties': {'bold': {'type': 'boolean'}, 'text': {'type': 'string'}, 'color': {'type': 'string'}, 'fontPx': {'type': 'number'}, 'bgColor': {'type': 'string'}, 'selector': {'type': 'string'}}, 'additionalProperties': False}, 'description': 'Pre-collected text elements to score without rendering'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['elements', 'viewport'], 'properties': {'options': {'type': 'object', 'properties': {'minTarget': {'type': 'number'}}, 'additionalProperties': False}, 'elements': {'type': 'array', 'items': {'type': 'object', 'required': ['rect'], 'properties': {'hint': {'type': 'string'}, 'rect': {'type': 'object', 'required': ['x', 'y', 'w', 'h'], 'properties': {'h': {'type': 'number'}, 'w': {'type': 'number'}, 'x': {'type': 'number'}, 'y': {'type': 'number'}}, 'additionalProperties': False}, 'role': {'type': 'string'}, 'label': {'type': 'string'}, 'value': {'type': 'string'}, 'fontPt': {'type': 'number'}, 'traits': {'type': 'array', 'items': {'type': 'string'}}, 'bgColor': {'type': 'string'}, 'fgColor': {'type': 'string'}, 'dynamicTypeClipped': {'type': 'boolean'}}, 'additionalProperties': False}}, 'viewport': {'type': 'object', 'required': ['w', 'h'], 'properties': {'h': {'type': 'number'}, 'w': {'type': 'number'}}, 'additionalProperties': False}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'source': {'type': 'string', 'description': 'Optional concatenated source (Swift or JS/TS) — enables code-vs-declaration contradiction checks and default-egress detection'}, 'app_json': {'type': 'string', 'description': 'Expo app.json / app.config JSON (managed RN). Its expo.ios.infoPlist, expo.android.permissions, plugins, and extra are audited.'}, 'info_plist': {'type': 'string', 'description': 'Raw Info.plist XML (native iOS / bare RN). Provide this OR app_json.'}, 'privacy_md': {'type': 'string', 'description': 'Optional PRIVACY.md / privacy policy text to cross-reference against declared permissions and default behavior'}, 'entitlements': {'type': 'string', 'description': 'Optional .entitlements XML'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'profile': {'type': 'string', 'description': 'Taste profile owning the binding. Omit to search all stored profiles for one bound to the project.'}, 'project': {'type': 'string', 'description': "Project identifier — resolves a saved taste surface binding (see bind_taste_surface). When the binding carries design_notes and a screenshot is passed, the screenshot's pixels verify the color-scheme notes; results gain note_assessments."}, 'elements': {'type': 'array', 'items': {'type': 'object', 'required': ['rect'], 'properties': {'rect': {'type': 'object', 'required': ['x', 'y', 'w', 'h'], 'properties': {'h': {'type': 'number'}, 'w': {'type': 'number'}, 'x': {'type': 'number'}, 'y': {'type': 'number'}}, 'additionalProperties': False}, 'role': {'type': 'string', 'description': 'Accessibility role/trait, e.g. button, link, cell, staticText, image, tab, textField'}, 'label': {'type': 'string'}, 'fontPt': {'type': 'number', 'description': 'Effective font point/dp size, if text'}, 'bgColor': {'type': 'string', 'description': 'Background color behind this element — hex, rgb(), or semantic name'}, 'fgColor': {'type': 'string', 'description': "Foreground color — hex (#1c1c1e), rgb(), or a platform semantic name ('secondaryLabel' iOS / 'onSurfaceVariant' Android)"}}, 'additionalProperties': False}, 'description': 'Elements captured from the rendered screen via an accessibility/view-hierarchy snapshot'}, 'viewport': {'type': 'object', 'required': ['w', 'h'], 'properties': {'h': {'type': 'number'}, 'w': {'type': 'number'}}, 'description': 'Screen size in pt (iOS) or dp (Android) at capture time, e.g. {w:393,h:852} iPhone 15, {w:412,h:915} Pixel', 'additionalProperties': False}, 'screenshot': {'type': 'string', 'description': "Optional base64 PNG of the screen, for the caller's reference. Geometry is scored from the snapshot, not decoded pixels."}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'elements': {'type': 'array', 'items': {'type': 'object', 'required': ['selector', 'rect'], 'properties': {'rect': {'type': 'object', 'required': ['x', 'y', 'w', 'h'], 'properties': {'h': {'type': 'number'}, 'w': {'type': 'number'}, 'x': {'type': 'number'}, 'y': {'type': 'number'}}, 'additionalProperties': False}, 'computed': {'type': 'object', 'properties': {'gap': {'type': 'string'}, 'color': {'type': 'string'}, 'margin': {'type': 'string'}, 'padding': {'type': 'string'}, 'fontSize': {'type': 'string'}, 'background': {'type': 'string'}}, 'additionalProperties': False}, 'selector': {'type': 'string'}}, 'additionalProperties': False}, 'description': 'Array of element rects captured from the rendered page via the DevTools snippet'}, 'viewport': {'type': 'object', 'required': ['w', 'h'], 'properties': {'h': {'type': 'number'}, 'w': {'type': 'number'}}, 'description': 'Viewport dimensions {w,h} at capture time', 'additionalProperties': False}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'url': {'type': 'string', 'description': 'REJECTED on this hosted (remote) endpoint; pass html instead. (Local/stdio: Raven launches headless chromium, renders the page, and audits the RENDERED DOM.)'}, 'html': {'type': 'string', 'description': 'The full HTML content of the page to audit'}, 'strict': {'type': 'boolean', 'description': 'Strict mode — also flags warnings as failures. Default: false'}, 'compact': {'type': 'boolean', 'description': 'Return only the decision-grade signal — score, grade, summary, errors, warnings, fix_priority — and drop the embedded base64 screenshot and the passes list (replaced by passes_count). Default false. Use when the full payload would blow the tool-result budget.'}, 'viewport': {'type': 'object', 'required': ['w', 'h'], 'properties': {'h': {'type': 'number'}, 'w': {'type': 'number'}}, 'additionalProperties': False}, 'interactions': {'type': 'array', 'items': {'type': 'object', 'required': ['selector', 'event', 'delay_ms'], 'properties': {'event': {'enum': ['hover', 'click', 'focus'], 'type': 'string'}, 'delay_ms': {'type': 'number'}, 'selector': {'type': 'string'}}, 'additionalProperties': False}, 'description': 'Before capturing, fire each interaction in order (hover/click/focus the selector, then wait delay_ms). Captures the resulting dynamic state — e.g. an on-hover theme-toggle wash invisible to a static screenshot.'}, 'scroll_settle': {'type': 'boolean', 'description': 'Before capturing, step through the page with short pauses so IntersectionObserver/whileInView reveals fire, then return to the top and settle. Also plays preload=none videos. Prevents blank-section false positives.'}, 'containerMaxWidth': {'type': 'number', 'description': "Your design system's canonical content-container width in px (e.g. 1152). When set, the responsive/max-width check flags divergence from this token instead of using the generic 1200px heuristic."}, 'adversarial_verify': {'type': 'boolean', 'description': 'After generating findings, independently re-check each against the live DOM/network and tag it confirmed / likely-artifact / inconclusive. Surfaces a debunked_count.'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ios', 'android', 'checklist'], 'properties': {'ios': {'type': 'object', 'required': ['elements', 'viewport'], 'properties': {'elements': {'type': 'array', 'items': {'type': 'object', 'required': ['rect'], 'properties': {'id': {'type': 'string'}, 'rect': {'type': 'object', 'required': ['x', 'y', 'w', 'h'], 'properties': {'h': {'type': 'number'}, 'w': {'type': 'number'}, 'x': {'type': 'number'}, 'y': {'type': 'number'}}, 'additionalProperties': False}, 'role': {'type': 'string'}, 'label': {'type': 'string'}}, 'additionalProperties': False}}, 'viewport': {'type': 'object', 'required': ['w', 'h'], 'properties': {'h': {'type': 'number'}, 'w': {'type': 'number'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'android': {'type': 'object', 'required': ['elements', 'viewport'], 'properties': {'elements': {'type': 'array', 'items': {'type': 'object', 'required': ['rect'], 'properties': {'id': {'type': 'string'}, 'rect': {'type': 'object', 'required': ['x', 'y', 'w', 'h'], 'properties': {'h': {'type': 'number'}, 'w': {'type': 'number'}, 'x': {'type': 'number'}, 'y': {'type': 'number'}}, 'additionalProperties': False}, 'role': {'type': 'string'}, 'label': {'type': 'string'}}, 'additionalProperties': False}}, 'viewport': {'type': 'object', 'required': ['w', 'h'], 'properties': {'h': {'type': 'number'}, 'w': {'type': 'number'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'checklist': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'a', 'relation'], 'properties': {'a': {'type': 'string'}, 'b': {'type': 'string'}, 'name': {'type': 'string'}, 'relation': {'enum': ['present', 'vertically-centered', 'baseline-aligned', 'left-aligned', 'equal-gap', 'equal-size', 'same-truncation'], 'type': 'string'}, 'tolerance': {'type': 'number'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'URL to render (http/https or file://)'}, 'breakpoints': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Viewport widths in px. Default [390, 768, 1440, 2160]'}, 'viewportHeight': {'type': 'number', 'description': 'Render height in px. Default 900'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['source'], 'properties': {'source': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}], 'description': 'React Native source — a single screen/component as a string, or an array of file contents. Concatenated before analysis.'}, 'strict': {'type': 'boolean', 'description': 'Strict mode — also count warnings as failures for grading. Default: false'}, 'profile': {'type': 'string', 'description': 'Taste profile owning the binding. Omit to search all stored profiles for one bound to the project.'}, 'project': {'type': 'string', 'description': 'Project identifier — resolves a saved taste surface binding (see bind_taste_surface). When the binding carries design_notes, each note is verified against the source (Animated/Reanimated, BlurView, haptics, fonts) and returned in note_assessments; missing notes count toward the grade.'}, 'color_scheme': {'enum': ['light', 'dark', 'automatic'], 'type': 'string', 'description': "The app's declared appearance (Expo app.json userInterfaceStyle). 'light' or 'dark' means single-mode by design — the dark-mode adaptation check is then suppressed. Default: automatic."}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'profile': {'type': 'string', 'description': 'Taste profile owning the binding. Omit to search all stored profiles for one bound to the project.'}, 'project': {'type': 'string', 'description': "Project identifier — resolves a saved taste surface binding (see bind_taste_surface). When the binding carries design_notes and a screenshot is passed, the screenshot's pixels verify the color-scheme notes; results gain note_assessments."}, 'elements': {'type': 'array', 'items': {'type': 'object', 'required': ['rect'], 'properties': {'rect': {'type': 'object', 'required': ['x', 'y', 'w', 'h'], 'properties': {'h': {'type': 'number'}, 'w': {'type': 'number'}, 'x': {'type': 'number'}, 'y': {'type': 'number'}}, 'additionalProperties': False}, 'role': {'type': 'string', 'description': 'Accessibility role/trait, e.g. button, link, cell, staticText, image, tab, textField'}, 'label': {'type': 'string'}, 'fontPt': {'type': 'number', 'description': 'Effective font point/dp size, if text'}, 'bgColor': {'type': 'string', 'description': 'Background color behind this element — hex, rgb(), or semantic name'}, 'fgColor': {'type': 'string', 'description': "Foreground color — hex (#1c1c1e), rgb(), or a platform semantic name ('secondaryLabel' iOS / 'onSurfaceVariant' Android)"}}, 'additionalProperties': False}, 'description': 'Elements captured from the rendered screen via an accessibility/view-hierarchy snapshot'}, 'platform': {'enum': ['ios', 'android'], 'type': 'string', 'description': "Target platform — 'ios' (default, 44pt minimum, iOS semantic colors) or 'android' (48dp minimum, Material semantic roles)"}, 'viewport': {'type': 'object', 'required': ['w', 'h'], 'properties': {'h': {'type': 'number'}, 'w': {'type': 'number'}}, 'description': 'Screen size in pt (iOS) or dp (Android) at capture time, e.g. {w:393,h:852} iPhone 15, {w:412,h:915} Pixel', 'additionalProperties': False}, 'screenshot': {'type': 'string', 'description': "Optional base64 PNG of the screen, for the caller's reference. Geometry is scored from the snapshot, not decoded pixels."}, 'scroll_settle': {'type': 'boolean'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['source'], 'properties': {'source': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}], 'description': 'SwiftUI source — a single file/view as a string, or an array of file contents. Concatenated before analysis.'}, 'strict': {'type': 'boolean', 'description': 'Strict mode — also count warnings as failures for grading. Default: false'}, 'profile': {'type': 'string', 'description': 'Taste profile owning the binding. Omit to search all stored profiles for one bound to the project.'}, 'project': {'type': 'string', 'description': 'Project identifier — resolves a saved taste surface binding (see bind_taste_surface). When the binding carries design_notes, each note is verified against the source (animation/material/haptic/font APIs) and returned in note_assessments; missing notes count toward the grade.'}, 'accent_color_contents': {'type': 'string', 'description': 'Optional raw Contents.json of AccentColor.colorset. When provided, the tool verifies AccentColor actually defines color components (flags an empty/undefined accent color as an error).'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'url': {'type': 'string', 'description': 'URL to render and measure. Requires headless chromium.'}, 'minSize': {'type': 'number', 'description': 'Minimum tap-target size in px on each axis. Default 44.'}, 'elements': {'type': 'array', 'items': {'type': 'object', 'required': ['selector', 'w', 'h'], 'properties': {'h': {'type': 'number'}, 'w': {'type': 'number'}, 'x': {'type': 'number'}, 'y': {'type': 'number'}, 'role': {'type': 'string'}, 'text': {'type': 'string'}, 'selector': {'type': 'string'}}, 'additionalProperties': False}, 'description': 'Pre-collected interactive elements to score without rendering.'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'url': {'type': 'string', 'description': 'REJECTED on this hosted (remote) endpoint; pass nodes instead. (Local/stdio: URL to render and measure, http/https or file://; requires headless chromium.)'}, 'nodes': {'type': 'array', 'items': {'type': 'object', 'required': ['selector', 'fontPx'], 'properties': {'tag': {'type': 'string'}, 'text': {'type': 'string'}, 'fontPx': {'type': 'number'}, 'selector': {'type': 'string'}, 'fontWeight': {'type': 'number'}, 'lineHeightPx': {'type': 'number'}}, 'additionalProperties': False}, 'description': 'Pre-collected text nodes to analyze without rendering.'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'URL to render and audit (http/https or file://)'}, 'themes': {'type': 'array', 'items': {'enum': ['light', 'dark'], 'type': 'string'}, 'description': "Themes to toggle (prefers-color-scheme + data-theme/class). Default: ['light','dark']"}, 'compact': {'type': 'boolean', 'description': 'Drop per-capture base64 screenshots; keep findings, counts, and summary. Default false. Use when screenshots would blow the tool-result budget.'}, 'timeoutMs': {'type': 'number', 'description': 'Per-navigation timeout in ms. Default: 30000'}, 'viewports': {'type': 'array', 'items': {'type': 'object', 'required': ['w', 'h'], 'properties': {'h': {'type': 'number'}, 'w': {'type': 'number'}, 'label': {'type': 'string'}}, 'additionalProperties': False}, 'description': 'Viewports to render. Default: iphone 393×852, desktop 1440×900, wide 2160×1200'}, 'interactions': {'type': 'array', 'items': {'type': 'object', 'required': ['selector', 'event', 'delay_ms'], 'properties': {'event': {'enum': ['hover', 'click', 'focus'], 'type': 'string'}, 'delay_ms': {'type': 'number'}, 'selector': {'type': 'string'}}, 'additionalProperties': False}, 'description': 'Fire each interaction before capture; the resulting state is diffed against baseline to catch hover/click white-wash and obscured content.'}, 'scroll_settle': {'type': 'boolean', 'description': 'Step through the page with short pauses to fire reveal-on-scroll/IntersectionObserver content, play videos, then return to the top before capture. Default: true'}, 'containerMaxWidth': {'type': 'number', 'description': "Your design system's canonical container width in px — makes the max-width check token-aware."}, 'includeScreenshots': {'type': 'boolean', 'description': 'Include the base64 full-page PNG per capture in the result. Default: false (screenshots are large).'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'url': {'type': 'string', 'description': 'URL to render and observe (http/https or file://). Requires headless chromium.'}, 'observeMs': {'type': 'number', 'description': 'Milliseconds to wait between currentTime samples after play() attempt. Default: 1000'}, 'dom_snapshot': {'type': 'array', 'items': {'type': 'object', 'required': ['selector', 'hasSource', 'readyState', 'networkState', 'errorCode', 'paused', 'autoplayBlocked', 'currentTimeStart', 'currentTimeEnd'], 'properties': {'paused': {'type': 'boolean', 'description': 'True if the element is paused'}, 'selector': {'type': 'string', 'description': 'CSS selector identifying the video element'}, 'errorCode': {'type': 'number', 'description': 'MediaError.code (0=none, 1=aborted, 2=network, 3=decode, 4=src-not-supported)'}, 'hasSource': {'type': 'boolean', 'description': 'True if currentSrc is non-empty OR the element has a src attribute or <source> child'}, 'readyState': {'type': 'number', 'description': 'HTMLMediaElement.readyState (0..4)'}, 'networkState': {'type': 'number', 'description': 'HTMLMediaElement.networkState (0..3; 3=NETWORK_NO_SOURCE)'}, 'currentTimeEnd': {'type': 'number', 'description': 'currentTime recorded after the observe window'}, 'autoplayBlocked': {'type': 'boolean', 'description': 'True if play() was rejected with NotAllowedError'}, 'currentTimeStart': {'type': 'number', 'description': 'currentTime recorded before the play attempt'}}, 'additionalProperties': False}, 'description': 'Pre-collected video observations to classify without rendering (deterministic path)'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['compositions'], 'properties': {'format': {'enum': ['dtcg', 'css'], 'type': 'string', 'description': 'Output format. Default: dtcg'}, 'compositions': {'type': 'array', 'items': {'type': 'object', 'required': ['system', 'group'], 'properties': {'group': {'type': 'string', 'description': 'Token group to take (color, typography, spacing, radius, elevation, motion)'}, 'system': {'type': 'string', 'description': 'Source design system ID'}}, 'additionalProperties': False}, 'description': 'Array of system-group pairs to compose'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'goals': {'type': 'array', 'items': {'type': 'string'}, 'description': "What to evaluate for (e.g. ['conversion', 'accessibility', 'mobile-usability'])"}, 'compact': {'type': 'boolean', 'description': 'Return only ids+names for matched principles/patterns (drop their full bodies) plus counts and any before/after diff. Default false. Use when the full principle library payload would blow the tool-result budget.'}, 'context': {'type': 'string', 'description': "What the design is (e.g. 'pricing page for SaaS product')"}, 'description': {'type': 'string', 'description': 'Description of the design to evaluate'}, 'after_screenshot': {'type': 'string', 'description': 'Base64 PNG of the AFTER state. When both before+after are provided, returns a structured pixel diff with fix_confirmed.'}, 'before_screenshot': {'type': 'string', 'description': 'Base64 PNG of the BEFORE state'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': "Name for the design system (e.g. 'Acme Corp', 'NightOwl')"}, 'style': {'enum': ['minimal', 'bold', 'warm', 'corporate', 'playful', 'dark'], 'type': 'string', 'description': 'Aesthetic direction — influences spacing, radii, shadows, motion, and typography. Default: minimal'}, 'format': {'enum': ['html', 'css', 'dtcg', 'figma', 'svg', 'all'], 'type': 'string', 'description': 'Export format: html (visual doc page), css (custom properties), dtcg (W3C JSON), figma (Figma Variables JSON), svg (color palette card), all. Default: html'}, 'dark_mode': {'type': 'boolean', 'description': 'Generate dark mode tokens alongside light. Default: true'}, 'base_system': {'type': 'string', 'description': "Start from an existing system as foundation (e.g. 'stripe', 'linear'). Colors will be replaced by brand_color if provided."}, 'brand_color': {'type': 'string', 'description': "Primary brand hex color (e.g. '#FF6B35'). Auto-generates a full harmonious palette using color theory."}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['service_name', 'current'], 'properties': {'ideal': {'type': 'array', 'items': {'type': 'object', 'required': ['label'], 'properties': {'label': {'type': 'string'}, 'actor_b': {'type': 'object', 'properties': {'action': {'type': 'string'}, 'evidence': {'type': 'string'}, 'frontstage': {'type': 'string'}}, 'additionalProperties': False}, 'delight': {'type': 'string'}, 'support': {'type': 'string'}, 'evidence': {'type': 'string'}, 'backstage': {'type': 'string'}, 'frontstage': {'type': 'string'}, 'pain_point': {'type': 'string'}, 'user_action': {'type': 'string'}}, 'additionalProperties': False}, 'description': 'Optional ideal-state blueprint — if provided, output shows current AND ideal side-by-side'}, 'actors': {'type': 'object', 'required': ['b'], 'properties': {'a': {'type': 'object', 'required': ['label'], 'properties': {'label': {'type': 'string'}}, 'description': "Actor A label (default: 'User'). Use when you want to name the first side (e.g. 'Customer', 'Patient').", 'additionalProperties': False}, 'b': {'type': 'object', 'required': ['label'], 'properties': {'label': {'type': 'string'}}, 'description': "Actor B label (e.g. 'Lawyer', 'Doctor', 'Agent'). Presence of this field switches to two-actor layout.", 'additionalProperties': False}}, 'description': 'Omit for classic single-actor Shostack blueprint. Provide to render a two-swim-lane HI-loop blueprint with a line of interaction between the two sides.', 'additionalProperties': False}, 'current': {'type': 'array', 'items': {'type': 'object', 'required': ['label'], 'properties': {'label': {'type': 'string', 'description': "Step label (e.g. 'Discover', 'Sign up', 'First use')"}, 'actor_b': {'type': 'object', 'properties': {'action': {'type': 'string', 'description': 'What actor B does in this step'}, 'evidence': {'type': 'string', 'description': 'Artifact actor B has — case file, notes, record'}, 'frontstage': {'type': 'string', 'description': 'What actor B sees — their own UI, tools, views'}}, 'description': 'Only used when `actors.b` is provided. Captures the other side of the interaction.', 'additionalProperties': False}, 'delight': {'type': 'string', 'description': 'Designed moment of delight at this step (shown as green callout)'}, 'support': {'type': 'string', 'description': 'Supporting processes, systems, third-party dependencies'}, 'evidence': {'type': 'string', 'description': 'In single-actor: artifact user receives. In two-actor: artifact actor A has.'}, 'backstage': {'type': 'string', 'description': 'What neither actor sees directly — shared systems, internal processes, back-office work'}, 'frontstage': {'type': 'string', 'description': 'In single-actor: what the user SEES (UI, agent greeting). In two-actor: what actor A sees.'}, 'pain_point': {'type': 'string', 'description': 'Known pain point at this step (shown as red callout)'}, 'user_action': {'type': 'string', 'description': 'In single-actor: what the user does. In two-actor: what actor A does.'}}, 'additionalProperties': False}, 'description': 'The current-state blueprint as an array of steps'}, 'subtitle': {'type': 'string', 'description': 'Short description or context line under the title'}, 'service_name': {'type': 'string', 'description': "Name of the service (e.g. 'Free trial signup', 'Client intake', 'Restaurant reservation')"}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'topic': {'type': 'string', 'description': "Filter by topic: 'logo', 'gradient', 'imagery', 'hierarchy', 'system', or a freeform search term. Omit to return all brand principles."}, 'format': {'enum': ['full', 'checklist', 'brief'], 'type': 'string', 'description': 'Output format. Default: full.'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['company'], 'properties': {'mode': {'enum': ['light', 'dark'], 'type': 'string', 'description': "Color mode preference. Default: based on the system's primary mode"}, 'format': {'enum': ['css', 'dtcg', 'guide'], 'type': 'string', 'description': "Output format: 'css' for CSS variables, 'dtcg' for W3C tokens, 'guide' for full implementation guide. Default: guide"}, 'company': {'type': 'string', 'description': "The company whose branding to use (e.g. 'Spotify', 'Stripe', 'Apple', 'Linear', 'Airbnb')"}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', 'properties': {}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['type'], 'properties': {'type': {'type': 'string', 'description': 'Strategy type: monetization, retention, onboarding, growth, metrics'}, 'stage': {'enum': ['startup', 'growth', 'mature'], 'type': 'string', 'description': 'Company stage for contextual filtering'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['type'], 'properties': {'type': {'type': 'string', 'description': "What you're shipping (e.g. 'signup form', 'pricing page', 'dashboard', 'landing page', 'modal')"}, 'platform': {'enum': ['desktop', 'mobile', 'responsive', 'ios', 'react-native'], 'type': 'string', 'description': "Platform context for platform-specific checks. 'ios' = native SwiftUI/iOS (Apple HIG); 'react-native' = RN/Expo (iOS HIG + Android Material: 44/48pt+hitSlop, accessibilityLabel/Role, font scaling, SafeAreaView, dark mode, platform parity, secrets). Both replace the web/mobile-web checks."}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['type'], 'properties': {'type': {'enum': ['error-messages', 'empty-state-copy', 'notifications', 'form-validation'], 'type': 'string', 'description': 'Content pattern type'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'format': {'enum': ['full', 'checklist', 'brief'], 'type': 'string', 'description': 'Output format: full (all details), checklist (implications + violations), brief (just summary). Default: full'}, 'context': {'type': 'string', 'description': "What you're writing for (e.g. 'error messages', 'onboarding copy', 'empty state', 'notification'). Omit to get all UX-writing principles."}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': "Content system ID (e.g. 'conversational-product-voice', 'gov-uk', 'shopify-polaris', 'atlassian')"}, 'section': {'enum': ['all', 'voice', 'tone_shifts', 'vocabulary', 'grammar', 'content-patterns', 'inclusive-language'], 'type': 'string', 'description': 'Return just one section. Default: all.'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'stage': {'enum': ['frame', 'empathy', 'broad', 'narrow', 'experiment', 'recommendation', 'full'], 'type': 'string', 'description': 'Which stage of the D4D loop to return. Default: full (all stages)'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': "Design system ID (e.g. 'stripe', 'linear')"}, 'group': {'type': 'string', 'description': 'Filter to a token group: color, color-dark, color-light, typography, spacing, radius, elevation, motion'}, 'format': {'enum': ['dtcg', 'css', 'flat'], 'type': 'string', 'description': 'Output format: dtcg (W3C standard), css (custom properties), flat (key-value). Default: dtcg'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'id': {'type': 'string', 'description': 'Framework id (heart, aarrr, north-star-metric, conversion-funnel, rice-scoring, okrs). Omit to list all.'}, 'search': {'type': 'string', 'description': 'Search for a framework by name or summary.'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['type'], 'properties': {'goal': {'enum': ['conversion', 'usability', 'accessibility', 'delight'], 'type': 'string', 'description': 'Filter by primary goal'}, 'type': {'type': 'string', 'description': "Pattern type (e.g. 'signup-flow', 'pricing-page', 'navigation', 'forms', 'landing-page', 'dashboard', 'modals-dialogs', 'empty-states', 'error-states', 'loading-states', 'cta', 'social-proof', 'mobile-conversion')"}, 'platform': {'enum': ['desktop', 'mobile', 'responsive'], 'type': 'string', 'description': 'Filter patterns by platform context'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['context'], 'properties': {'format': {'enum': ['full', 'checklist', 'brief'], 'type': 'string', 'description': 'Output format: full (all details), checklist (implications + violations), brief (just summary). Default: full'}, 'context': {'type': 'string', 'description': "What you're designing (e.g. 'signup form', 'pricing page', 'mobile nav', 'dark dashboard')"}, 'category': {'type': 'string', 'description': 'Filter to category: accessibility, brand, color-systems, color-theory, component-architecture, d4d, gestalt, laws-of-ux, mobile-ux, nielsen-heuristics, research, responsive-layout, service-design, spacing-systems, typography, ux-writing'}, 'platform': {'enum': ['web', 'ios', 'react-native'], 'type': 'string', 'description': "Platform context. 'ios' returns Apple HIG principles (Dynamic Type, 44pt targets, SF Symbols, safe areas, dark-mode, haptics, App Review privacy); 'react-native' returns RN principles (44/48pt+hitSlop, accessibilityLabel/Role, font scaling, SafeAreaView, dark mode, iOS+Android parity, secrets). Both replace the web/CSS-oriented set. Default: web."}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'search': {'type': 'string', 'description': 'Search within methods by name or description.'}, 'category': {'enum': ['qualitative', 'quantitative', 'usability', 'all'], 'type': 'string', 'description': 'Which family of methods. Default: all.'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['type'], 'properties': {'type': {'enum': ['service-blueprinting', 'human-handoff', 'signup-as-service', 'omnichannel-continuity', 'moments-of-truth'], 'type': 'string', 'description': 'Service design pattern type'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', 'properties': {}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'search': {'type': 'string', 'description': 'Search by name, description, or tag'}, 'category': {'type': 'string', 'description': 'Filter by category: commerce-saas, government, marketing-saas, productivity-saas'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'capability': {'type': 'string', 'description': 'Filter by capability, e.g. product-photoshoot, text-to-video, brand-kit, ugc-ad.'}, 'media_type': {'enum': ['image', 'video', 'audio', '3d', 'campaign', 'analysis'], 'type': 'string', 'description': 'Filter by media type.'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'search': {'type': 'string', 'description': 'Search preset name or description.'}, 'media_type': {'enum': ['image', 'video', 'campaign'], 'type': 'string', 'description': 'Filter presets by media type.'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'search': {'type': 'string', 'description': 'Search by name or description'}, 'category': {'type': 'string', 'description': "Filter by category: component-library, consumer, developer, fintech, framework, platform, productivity. Saved user systems list under 'user'."}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['creative_text'], 'properties': {'channel': {'type': 'string', 'description': 'Target channel.'}, 'audience': {'type': 'string', 'description': 'Target audience if not in a brand profile.'}, 'creative_text': {'type': 'string', 'description': 'Prompt, script, ad copy, or creative concept to score.'}, 'brand_profile_id': {'type': 'string', 'description': 'Local Raven brand profile ID.'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'url': {'type': 'string', 'description': 'REJECTED on this hosted (remote) endpoint; pass html instead. (Local/stdio: Raven launches headless chromium, renders the page, and scores the RENDERED DOM.)'}, 'html': {'type': 'string', 'description': 'The full HTML content of the page to score.'}, 'strict': {'type': 'boolean', 'description': 'Strict mode — count warnings as failures in the overall score. Default: false.'}, 'containerMaxWidth': {'type': 'number', 'description': "Your design system's canonical content-container width in px (e.g. 1152). Forwarded to the responsive/max-width check."}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query'], 'properties': {'layer': {'enum': ['principles', 'patterns', 'business', 'all'], 'type': 'string', 'description': 'Which layer to search: principles, patterns, business, or all (default)'}, 'query': {'type': 'string', 'description': "Search term (e.g. 'touch targets', 'pricing psychology', 'color contrast')"}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'level': {'enum': ['AA', 'AAA'], 'type': 'string', 'description': 'WCAG level when targetRatio is not given per-pair. Default AA.'}, 'pairs': {'type': 'array', 'items': {'type': 'object', 'required': ['fg', 'bg'], 'properties': {'bg': {'type': 'string'}, 'fg': {'type': 'string'}, 'bold': {'type': 'boolean'}, 'ratio': {'type': ['number', 'null']}, 'fontPx': {'type': 'number'}, 'status': {'enum': ['pass', 'fail', 'indeterminate'], 'type': 'string'}, 'selector': {'type': 'string'}, 'targetRatio': {'type': 'number'}}, 'additionalProperties': False}, 'description': 'Color pairs to remediate. Each: { selector?, fg, bg, fontPx?, bold?, targetRatio? }. fontPx/bold pick the large-text threshold; targetRatio overrides the level.'}}, '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,…
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…
mcp
Creates and edits data architecture diagrams with tables, data flows, column lineage, grouping, validation, and PNG export.