ReftrixMCP
ReftrixMCP lets you analyze web pages, extract reusable design patterns, search a design knowledge base, and generate/compare UI implementation assets via MCP tools.
Analyze URLs or HTML for layout sections, grids, typography, colors, screenshots, motion patterns, design quality, AI clichés, and narrative/worldview.
Semantically search layouts, UI parts, motions, backgrounds, narratives, responsive differences, images, similar sites, and unified facets with hybrid/vector/full-text reranking.
Inspect and compare sections, parts, and pages across styles, layout, interaction, accessibility, visual similarity, quality, and color.
Generate React, Vue, Svelte, Astro, or HTML code plus motion implementation code with Tailwind/CSS options.
Run responsive captures, WCAG accessibility audits, Core Web Vitals performance checks, and visual regression/change tracking.
Batch ingest/analyze URLs asynchronously, poll job status, manage preferences/profiles, query audit logs, export/delete GDPR data, monitor embedding quality, get brand palettes, health diagnostics, and generate HTML/PDF reports.
Analyzes CSS animations, grids, and typography from web pages to extract and discover reusable design and motion patterns.
Integrates with local Ollama vision models to enhance layout analysis, motion detection, and narrative understanding from web screenshots.
Supports the generation of functional React code components from analyzed website sections and UI patterns.
ReftrixMCP
Web design knowledge base platform -- layout analysis, motion detection, and quality evaluation via MCP tools.
For frontend engineers, designers, and AI-agent builders who want to analyze real websites and retrieve reusable UI patterns via Claude or any MCP client.
ReftrixMCPは、Webデザインパターンをベクトル検索(pgvector HNSW)と RAGで検索可能なナレッジベースに集約し、MCPツール経由でClaude等の AIエージェントと統合するプラットフォームです。
主要機能: レイアウト分析 / モーション検出 / 品質評価 / セマンティック検索 / 横断検索 / 画像類似検索 / レスポンシブ解析 / パーツ分析 / レート制限 / 検索キャッシュ / BullMQ UI / SBOM
27のMCPツールを提供: Layout(4) / Motion(2) / Quality(1) / Page(3) / Narrative(1) / Background(1) / Responsive(2) / Part(3) / System(1) / Search(1) / Design(3) / Data(2) / Audit(1) / Accessibility(1) / Performance(1)
詳細な日本語ドキュメント: docs/README.ja.md
What it does
Layout analysis -- auto-detect sections (hero, feature, CTA, etc.), extract grid/typography, and generate React/Vue/HTML code
Motion detection -- discover CSS/JS animations with frame capture (15 px/frame video mode), CLS detection via Pixelmatch
Quality evaluation -- score designs on three axes (originality, craftsmanship, contextuality) with anti-AI-cliche detection
Semantic search -- find layout, motion, narrative, background, and responsive patterns via pgvector HNSW hybrid search
Part-level analysis -- extract 16 UI part types (button, icon, heading, etc.) with DINOv2 visual embeddings for visual similarity search
Vision integration -- Ollama llama3.2-vision for richer layout, motion, and narrative understanding
Section post-processing -- auto merge/split sections by type, heading, and height (Rule 1-4) for optimal structure
Multi-tile capture -- split large sections (>viewport height) into tiles for complete DINOv2 visual coverage
Blank image detection -- detect lazy-loading unrendered sections and re-capture via Playwright for full coverage
Code generation -- convert analyzed sections to React, Vue, or plain HTML with matched motion patterns
Unified search -- cross-service search across layout, part, motion, background, and narrative patterns in a single query
Image similarity search -- find visually similar designs via DINOv2 embeddings from Base64/URL input (RRF 3-source)
Rate limiting -- Token Bucket + Redis Lua (CWE-770 DoS prevention), 3-tier (analysis 10 RPM / search 120 RPM / default 60 RPM)
Search cache -- LRU in-memory cache (lru-cache v11) with TTL-based natural expiry (5 min)
BullMQ UI -- Bull Board dashboard for monitoring async page.analyze jobs (port 21080)
SBOM -- CycloneDX 1.6 auto-generation for EU CRA vulnerability reporting compliance
Related MCP server: Firecrawl MCP Server
Why ReftrixMCP
Layout-aware | Sections, grids, and typography extracted as structured data -- not just screenshots |
Motion-aware | CSS static analysis + frame-by-frame video capture for real animation behavior |
Quality-aware | Three-axis scoring with actionable improvement suggestions |
Searchable | 768-dim multilingual embeddings (e5-base) with HNSW index and hybrid RRF ranking |
Preference-aware | Search tools accept an optional |
Part-aware | 16 UI part types extracted with DINOv2 visual embeddings for cross-site component comparison |
MCP-native | 27 tools purpose-built for Claude Desktop and MCP Client CLI |
Quickstart
Run
page.analyzeon any URL in under 5 minutes.
Prerequisites
Node.js ^22.23.4 || ^24.22.1 || ^26.12.1, pnpm 10+, Docker & Docker Compose, Ollama
Setup
git clone https://github.com/TKMD/ReftrixMCP.git && cd ReftrixMCP
pnpm install # CUDA skip is default; see GPU note below
cp .env.example .env.local # edit DATABASE_URL / REDIS_URL as needed
cp .env.local packages/database/.env # Prisma CLI requires this copy
pnpm docker:up # PostgreSQL 18 + pgvector + Redis
pnpm db:migrate && pnpm db:seed
pnpm build
pnpm exec playwright install chromium # browser for page crawling
pnpm --filter @reftrixmcp/ml download:dinov2 # DINOv2 visual embedding model (~330 MB)
pnpm --filter @reftrixmcp/ml repair:e5-cache --check # (optional) verify multilingual-e5-base ONNX cache (~1.1 GB) integrity
curl -fsSL https://ollama.com/install.sh | sh # install Ollama
ollama pull llama3.2-vision # vision model (~7.9 GB)
ollama serve # keep running in a separate terminalNote: If you change
.env.local, also updatepackages/database/.env.page.analyzeworkers are auto-forked byWorkerSupervisorwhen the MCP server starts (v0.4.0 PR7d-2+). Manual start viapnpm --filter @reftrixmcp/mcp-server worker:start:pageis developer-only and requiresREFTRIX_ALLOW_MANUAL_WORKER=trueto bypass the Redis-based dual-run guard if the MCP server is also running. See Getting Started for GPU configuration and details.GPU / CUDA: CUDA binary download is skipped by default (CPU fallback). For GPU acceleration setup, see Troubleshooting: CUDA Detection.
pnpm "Ignored build scripts": On
pnpm install, pnpm 10 printsIgnored build scripts: @prisma/client, esbuild, sharp, ...and suggestsRun "pnpm approve-builds". This is expected, not an error — pnpm 10 blocks dependency build/lifecycle scripts by default as a supply-chain safeguard. Setup still completes becausesharpandesbuildship prebuilt binaries, and the Prisma client is generated by the@reftrixmcp/databaseworkspace package's ownpostinstall(prisma generate) duringpnpm install— a workspace lifecycle script, which pnpm does not gate behind the dependency build-script allowlist. Only runpnpm approve-buildsif you have a specific reason to let one of these blocked dependencies run its own native build step (onnxruntime-nodeis already allow-listed viapnpm.onlyBuiltDependencies, so it never appears in the ignored list; and CUDA acceleration is a separate opt-in — see the GPU / CUDA note above — notpnpm approve-builds).
Using the npm package
If you install @reftrixmcp/mcp-server from npm instead of cloning, the Playwright browser is not included: get it with npx playwright@1.57.0 install chromium (any directory). See "Using the npm Package" in the MCP Server README for the browser notice (third-party software, not covered by this project's license, not redistributed, not in the SBOM) and the --ignore-scripts step (npm rebuild @prisma/client).
Connect to Claude
Add to your MCP config:
Claude Desktop:
~/Library/Application Support/Claude/claude_desktop_config.json(macOS)MCP Client CLI:
.mcp.jsonin the project root or~/.claude/.mcp.json
{
"mcpServers": {
"reftrix": {
"command": "node",
"args": ["/absolute/path/to/ReftrixMCP/apps/mcp-server/dist/index.js"],
"env": {
"NODE_ENV": "development",
"DATABASE_URL": "postgresql://reftrix:change_me@localhost:26432/reftrix?schema=public",
"REDIS_URL": "redis://localhost:27379",
"OLLAMA_BASE_URL": "http://localhost:11434",
"OLLAMA_HOST": "http://localhost:11434",
"ENABLE_SECTION_SCREENSHOT_FALLBACK": "true"
}
}
}
}Replace
change_mewith a secure password. Port 26432 = standard 5432 + 21000 offset.
OLLAMA_BASE_URLis used by the MCP server process;OLLAMA_HOSTis used by the worker process. Both must match if Ollama runs on a non-default port.
ENABLE_SECTION_SCREENSHOT_FALLBACKenables Playwright-based individual section screenshots for sections outside the initial screenshot range (WebGL/lazy-rendered pages). This significantly improves DINOv2 visual embedding coverage. Set to"false"to disable.Optional environment variables (defaults work out of the box):
MAX_TILES_PER_SECTION(default 20, max 100) -- max tiles per section for multi-tile capture.BLANK_IMAGE_STDDEV_THRESHOLD(default 5.0) -- stddev threshold for blank image detection.DUPLICATE_VECTOR_THRESHOLD(default 0.995) -- cosine similarity threshold for vision embedding dedup.EMBEDDING_IDLE_TIMEOUT_MS(default 30000) -- ONNX Worker VRAM auto-release timer (0 to disable).DINOV2_MODEL_PATH-- custom DINOv2 ViT-B/14 ONNX model path.EMBEDDING_CACHE_ENABLED(default true) -- enable/disable the Layout Embedding disk cache (additive opt-out flag; set"false"to write no cache files).REFTRIX_EMBEDDING_CACHE_ROOT(default/tmp/reftrix-embedding-cache) -- embedding cache root; a root resolving outsideos.tmpdir()is rejected by default (fail-closed). SetREFTRIX_EMBEDDING_CACHE_ROOT_ALLOW_FALLBACK=trueto instead degrade to the default root with a warning.
Example tools
ReftrixMCP provides 27 MCP tools. Key examples:
layout.ingest-- fetch a web page, take a screenshot, and extract section patternslayout.search-- semantic search over layout sections by natural-language querymotion.detect-- detect CSS/JS animations with video-mode frame capturequality.evaluate-- score design quality on originality, craftsmanship, and contextualitypage.analyze-- unified analysis: layout + motion + quality + responsive in one call (async via BullMQ), with opt-in Phase 7.5: accessibility audit, performance evaluation, and auto snapshotresponsive.search-- search responsive analysis results by viewport and breakpointpart.search-- semantic search over UI parts with visual (DINOv2) or text embeddingspart.inspect-- get detailed part info including computed styles, bounding box, and accessibilitypart.compare-- compare 2-5 parts side by side on styles, layout, and interaction
Full tool reference: MCP Tools Guide
Architecture
MCP Client (Claude Desktop / Code) --stdio--> MCP Server (<!-- gen:tool-count -->27<!-- /gen:tool-count --> tools, Zod)
+-- Service Layer: Playwright, Sharp+Pixelmatch, DOMPurify
+-- ML Layer: ONNX Runtime (multilingual-e5-base + DINOv2 ViT-B/14, 768-dim)
+-- BullMQ Workers: page.analyze, quality.evaluate
+-- PostgreSQL 18 + pgvector 0.8 (HNSW, tsvector) + Redis 7Documentation
Guide | Description |
Installation, setup, and first analysis | |
All 27 tools with usage examples | |
Async analysis flow and data structures | |
Common issues and solutions |
Known limitations
onnxruntime-nodeis an optional dependency thatpnpm installinstalls by default (it powers the ML features — embedding and visual search). If it fails to install on an unsupported platform, or you skip it withpnpm install --no-optional, the non-ML tools (layout analysis, quality evaluation, code generation) still workCPU-mode embedding takes ~2-5 s per text; GPU recommended for batch workloads
Minimum 16 GB RAM; 32 GB recommended for concurrent analysis with Ollama Vision
First embedding call downloads ~1.1 GB ONNX model (multilingual-e5-base, FP32) into the transformers.js cache. Verify integrity at any time with
pnpm --filter @reftrixmcp/ml repair:e5-cache --check; pass--repairto re-download on size/SHA-256 mismatch, or--forceto always re-downloadpage.analyzeworkers are auto-forked byWorkerSupervisorwhen the MCP server starts (v0.4.0 PR7d-2+); manual start is developer-only (REFTRIX_ALLOW_MANUAL_WORKER=truerequired when MCP server is running)Vision analysis (layout, motion, narrative) requires Ollama +
llama3.2-visionrunning locallyDINOv2 visual embedding model requires ~330 MB download (ViT-B/14 ONNX)
Release notes / リリースノート
npm publish automation — Trusted Publishing / OIDC (2026-07-12): npm publishing is now driven by CI. Creating a GitHub Release for a
v*tag triggers.github/workflows/publish.yml, which publishes the 5 packages (@reftrixmcp/core,@reftrixmcp/database,@reftrixmcp/ml,@reftrixmcp/webdesign-core,@reftrixmcp/mcp-server) in dependency order via npm Trusted Publishing (OIDC) — noNPM_TOKENsecret is used, and every package is published with--provenance. Averifyjob builds and validates all tarballs first; apublishjob runs only after thenpm-publishGitHub Environment's required-reviewer approval. / npm 公開自動化 — Trusted Publishing / OIDC(2026-07-12): npm 公開は CI 駆動になりました。v*タグの GitHub Release を作成すると.github/workflows/publish.ymlが起動し、5 パッケージ(@reftrixmcp/core・@reftrixmcp/database・@reftrixmcp/ml・@reftrixmcp/webdesign-core・@reftrixmcp/mcp-server)を依存順に npm Trusted Publishing (OIDC) で公開します —NPM_TOKENシークレットは使用せず、各パッケージは--provenance付きで公開されます。verifyjob が先に全 tarball を build・検証し、publishjob はnpm-publishGitHub Environment の required-reviewer 承認の後にのみ実行されます。Plan v4.4 PR-N (2026-05-17):
WorkerSupervisorOptions.restartDelayMsfield formal removal + env-only canonical SSOT consolidation per ADR-0035 Amendment 1 §Decision 5. TheWORKER_RESTART_DELAY_MSandEMBEDDING_BACKFILL_RESTART_DELAY_MSenvironment variables are now the sole source of truth for per-type restart cooldown values; resolution is performed viagetRestartDelayMsForType(workerType). Server version bumped to 0.6.0. /WorkerSupervisorOptions.restartDelayMsフィールドを正式削除し、ADR-0035 Amendment 1 §Decision 5 に従い env-only canonical SSOT へ一元化。WORKER_RESTART_DELAY_MSとEMBEDDING_BACKFILL_RESTART_DELAY_MS環境変数が per-type restart cooldown 値の唯一の真実源となり、getRestartDelayMsForType(workerType)経由で解決される。サーバーバージョンを 0.6.0 に bump。
License
AGPL-3.0-only -- see LICENSE.
Network use requires source disclosure per Section 13. Source: github.com/TKMD/ReftrixMCP Commercial license: licence@reftrix.io
Contributing
See CONTRIBUTING.md.
Security
Report vulnerabilities per SECURITY.md. Privacy: docs/legal/PRIVACY_POLICY.md | Profiling privacy: apps/mcp-server/PRIVACY.md | Data retention: apps/mcp-server/DATA_RETENTION.md | Third-party licenses: THIRDPARTY_LICENSES.md
Available Tools
27 toolsaccessibility.auditARead-onlyIdempotent
WCAG 2.1 accessibility audit using axe-core with contrast ratio checking. Analyzes HTML or URL for WCAG A/AA/AAA compliance, detects violations with severity classification, calculates accessibility score (0-100), and checks text/background contrast ratios.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | URL to audit (mutually exclusive with html). SSRF-validated. | |
| html | No | HTML content to audit directly (max 10MB, mutually exclusive with url). | |
| level | No | WCAG conformance level to check (default: AA). | AA |
| include_passes | No | Include passed accessibility rules in response (default: false). | |
| include_contrast | No | Include OKLCH-based contrast ratio check for text/background pairs (default: true). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, openWorldHint. Description adds behavioral context: uses axe-core engine, checks contrast ratios, calculates accessibility score (0-100), and detects violations with severity classification. No contradictions. Adds value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single paragraph, front-loaded with the primary purpose. No wasted words, but could be more structured (e.g., bullet points) to improve scanability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description adequately explains the return values (violations, severity, score, contrast ratios). The 5 parameters are well-documented in the schema. Description is sufficiently complete for an agent to understand usage and outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. Description adds context about scoring and contrast ratio checking but does not significantly enhance parameter understanding beyond the schema's descriptions and constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states a specific verb and resource: 'WCAG 2.1 accessibility audit using axe-core' with contrast ratio checking. It enumerates specific outputs (violations, severity, score, contrast ratios) and distinguishes from siblings like 'audit.query' and 'quality.evaluate' by being highly specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies use for accessibility audit but does not provide explicit guidance on when to use this tool versus alternatives (e.g., audit.query or quality.evaluate). No when-not-to-use or alternative suggestions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit.queryBRead-onlyIdempotent
監査ログを検索します。GDPR Art.30に基づく処理活動記録の閲覧。Query audit logs. View records of processing activities per GDPR Art.30.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 結果上限(最大100、デフォルト20) / Result limit (max 100, default 20) | |
| action | No | アクションフィルタ(例: data.delete, page.analyze) / Action filter (e.g., data.delete, page.analyze) | |
| end_date | No | 終了日時(ISO 8601形式) / End date (ISO 8601 format) | |
| start_date | No | 開始日時(ISO 8601形式) / Start date (ISO 8601 format) | |
| target_type | No | ターゲットタイプフィルタ(例: web_page, preference_profile) / Target type filter (e.g., web_page, preference_profile) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the safety profile is clear. The description adds GDPR context but does not disclose other behaviors like pagination or rate limits. Given annotations, the description provides adequate additional context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (two sentences) and front-loaded with the purpose in both Japanese and English. Every sentence adds value with no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a query with 5 parameters, no output schema, and annotations covering safety, the description is minimally adequate but lacks details on return format or usage examples. It could be more complete for a query tool without output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters have descriptions in the input schema (100% coverage), so the schema already explains parameter meaning. The description does not add extra value beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as querying audit logs and references GDPR Art.30, which is specific. However, it does not strongly differentiate from sibling tools like search.unified, but the audit log domain is distinct enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as search.unified or data.delete. There is no mention of prerequisites or applicability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
background.searchARead-onlyIdempotent
BackgroundDesignをセマンティック検索します。グラデーション、グラスモーフィズム、SVG背景等の背景デザインパターンを自然言語で検索できます。designType(14種類)やwebPageIdでフィルタリング可能です。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 取得件数(1-50、デフォルト: 10) | |
| query | Yes | 検索クエリ(自然言語、1-500文字) | |
| offset | No | オフセット(0以上、デフォルト: 0) | |
| filters | No | 検索フィルター | |
| profile_id | No | 嗜好プロファイルID(検索結果のリランキングに使用) / Preference profile ID (used for search result reranking) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true and idempotentHint=true, which the description does not contradict. The description adds context about semantic search and filter capabilities, reinforcing the non-destructive, read-only nature. No behavioral traits are missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loading the core purpose. Every sentence adds value: first states the action, second explains filtering capability. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With full schema coverage and annotations, the description completes the picture for a search tool. It lacks mention of result format or pagination, but these are typical for search and can be inferred from the schema's limit/offset parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage, so each parameter is already well-documented. The description only mentions query and two filter fields, adding minimal extra meaning. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it performs semantic search for background designs, specifying types like gradients, glassmorphism, and SVG backgrounds. It distinguishes from siblings such as design.search_by_image and layout.search by focusing on background design patterns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for natural language search of background designs and mentions filtering, but does not explicitly state when to use this tool versus alternatives like design.search_by_image or search.facets. No exclusion criteria or comparisons are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
data.deleteA
GDPR Art.17「忘れられる権利」/ CCPA §1798.105 に基づくデータ完全削除。page(全関連テーブルCASCADE DELETE)、profile(嗜好プロファイル完全削除)、all_user_data(全ユーザーデータ一括削除)から選択。confirm: true 必須。target=page / all_user_data では DB 削除前に embedding-backfill Queue の滞留ジョブ(7カテゴリ)も削除し、非同期 backfill による削除済みデータ復活を防止する。GDPR Art.17 / CCPA §1798.105 Right to Erasure. Permanently deletes all data for the specified target. Supports page (CASCADE DELETE), profile (hard delete), all_user_data (bulk delete). confirm: true is required. For target=page / all_user_data, embedding-backfill queue jobs (7 categories) are also removed before DB deletion to prevent async backfill from resurrecting erased data.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | 対象ID(UUIDv7形式) / Target ID (UUIDv7 format). page → web_page.id, profile/all_user_data → preference_profile.id | |
| reason | Yes | 削除理由(GDPR監査要件、1-500文字) / Deletion reason (GDPR audit requirement, 1-500 chars) | |
| target | Yes | 削除対象 / Deletion target: page (web page + all related data), profile (preference profile + signals), all_user_data (all pages + profile) | |
| confirm | Yes | 削除確認フラグ(true必須、誤削除防止) / Deletion confirmation flag (must be true) | |
| page_ids | No | ページID配列(target=all_user_data時のみ、最大100件) / Page IDs (only for target=all_user_data, max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavior beyond the annotations: permanent/hard deletion, CASCADE DELETE for pages, bulk deletion for all_user_data, mandatory confirm: true, and removal of embedding-backfill queue jobs to prevent deleted data from being resurrected. These are critical side effects and safety constraints for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded and logically organized, starting with legal basis and target selection. However, the Japanese and English text duplicate the same information almost exactly, which adds token cost without adding semantic value for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no output schema, the description covers the essential behavior: permanence, target scope, confirm requirement, and asynchronous queue cleanup. It does not mention required permissions, failure behavior, or audit logging beyond the reason parameter, but it is sufficiently complete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all five parameters in detail. The description still adds useful parameter-linked behavior: target-specific deletion modes, the confirm requirement, and the queue-job cleanup that applies specifically to page and all_user_data targets.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: permanent deletion of data under GDPR Art.17 / CCPA §1798.105. It clearly enumerates the three deletion targets (page, profile, all_user_data) and their scope, letting an agent distinguish this from siblings like preference.reset or data.export.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for when this tool applies: legally mandated erasure, with target selection and a mandatory confirm flag. It does not explicitly name alternative tools or when-not-to-use cases, but the legal-erasure context and target scoping are sufficiently clear for correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
data.exportARead-onlyIdempotent
GDPR Art.20「データポータビリティの権利」に基づくデータエクスポート。指定されたpage/profileの全関連データをJSON形式でエクスポート。PII情報を明示的にマーキング。GDPR Art.20 Right to Data Portability. Exports all related data for the specified target in JSON format. PII fields are explicitly marked.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | 対象ID(UUIDv7形式) / Target ID (UUIDv7 format) | |
| target | Yes | エクスポート対象 / Export target: page (web page + all related data), profile (preference profile + signals) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and idempotentHint=true, indicating safe behavior. Description adds valuable context: exports 'all related data', JSON format, and PII marking. Does not contradict annotations. Could be more specific about scope limits or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is succinct, starting with the core purpose (GDPR export), then details (target, format, PII). Two languages but no wasted sentences. Every part adds value and is well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given tool simplicity (2 params, no output schema) and rich annotations, description covers export purpose, target, format, and PII marking. Missing details like return behavior (file vs stream) or error scenarios, but overall adequate for a compliance tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. Description adds context by expanding on enum values for 'target' (e.g., 'page (web page + all related data)') and explaining UUID format, enriching beyond schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states tool exports data under GDPR Art.20 for data portability, specifying targets (page/profile), format (JSON), and PII marking. This distinctively separates it from sibling tools like data.delete (deletion) and audit.query (querying), establishing a unique purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly links tool usage to GDPR Art.20 right to data portability, giving clear context for when to use. However, does not explicitly state when not to use or mention alternative tools for general data retrieval, leaving some inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
design.compareARead-onlyIdempotent
2-5件のWebページをレイアウト・視覚・品質・カラーの4軸で比較し、ペアワイズ類似度スコア(0-1)を算出します。include_detailsで共通パターンと差分ポイントも取得可能。 / Compare 2-5 web pages across layout, visual, quality, and color dimensions. Returns pairwise similarity scores (0-1). Set include_details for common patterns and key differences.
| Name | Required | Description | Default |
|---|---|---|---|
| page_ids | Yes | 比較対象ページID(2-5件、UUID形式) / Page IDs to compare (2-5, UUID format) | |
| dimensions | No | 比較次元(デフォルト: 全4次元) / Comparison dimensions (default: all 4) | |
| include_details | No | 共通パターン・差分ポイントを含めるか(デフォルト: false) / Include details (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/closed-world, so safety is covered; the description adds the output contract (pairwise scores normalized 0-1) and what include_details unlocks (common patterns and key differences). It does not mention cost/latency for a 2-5 page pairwise comparison, which is the main residual unknown.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Each language block is two tight sentences, front-loaded with the action and scope, then the return value, then the optional flag. The bilingual duplication doubles the token footprint but is a consistent structural convention rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining returns and does so (pairwise similarity scores, optional detail block). Minor gap: it doesn't indicate output shape for N pages (e.g. number of pairs) or whether scores are per-dimension, which an agent assembling a report would want.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already defines page_ids, dimensions, and include_details including defaults and bounds. The description restates the 2-5 range and clarifies that details mean common patterns and differences, but adds little beyond the existing field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (compare) and a tightly scoped resource (2-5 web pages), plus the four comparison axes and the return (pairwise similarity 0-1). The 'web page' scope distinguishes it from siblings like part.compare, style.get_palette, or design.similar_site without needing the schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly signals the use case (multi-page comparison across layout/visual/quality/color) and tells the agent how to get extra output via include_details. It stops short of stating when NOT to use it or naming an alternative such as part.compare or quality.evaluate for single-page scoring.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
design.search_by_imageARead-onlyIdempotent
画像から視覚的に類似したデザインセクションを検索します。Base64エンコード画像またはHTTPS画像URLを入力として受け付けます。DINOv2 visual embeddingを使用したHNSW検索で類似デザインを発見します。オプションのテキストクエリを指定すると、RRF 3-source融合(text 40% + vision 30% + fulltext 30%)でハイブリッド検索を実行します。
| Name | Required | Description | Default |
|---|---|---|---|
| image | Yes | Base64エンコードされた画像データ(data:image/...;base64,... 形式も可)またはHTTPS画像URL。受理形式は PNG / JPEG / WebP(先頭バイトで判定)。それ以外は UNSUPPORTED_IMAGE_FORMAT で拒否 | |
| limit | No | 取得件数(1-50、デフォルト: 10) | |
| query | No | オプションのテキストクエリ(ハイブリッド検索用、日本語/英語対応、1-500文字) | |
| section_type | No | セクションタイプフィルタ(hero, feature, cta, testimonial, pricing, footer等) | |
| min_similarity | No | 最小類似度閾値(0-1、デフォルト: 0.3) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/closed-world, so safety is covered. The description then adds genuinely useful behavioral context beyond that: DINOv2 visual embeddings, HNSW nearest-neighbor retrieval, and the exact RRF fusion weighting (40/30/30) when a query is present, which tells the agent how results are ranked and why hybrid results may differ.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, well front-loaded: purpose first, accepted inputs second, mechanism third, optional-mode fourth. No filler. Slightly over-indexed on implementation internals (DINOv2/HNSW) that an agent does not strictly need to call it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Parameters are fully documented via schema and safety via annotations, but there is no output schema and the description says nothing about what a result looks like (sections, similarity scores, ordering, count). For a search tool whose output shape is undefined elsewhere, that is a notable remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns extra credit by explaining the semantic effect of the 'query' parameter (it switches the whole search into a 3-source RRF fusion rather than a pure visual lookup), which the schema text alone does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: searching design sections visually similar to a supplied image. It distinguishes itself from the other *search* siblings (layout.search, motion.search, narrative.search, background.search) by naming the modality (image) and the target resource (design sections) rather than sites or parts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the two input modes (Base64 or HTTPS URL) and, critically, the condition that switches behavior: an optional text query triggers the RRF hybrid search. That is clear context for mode selection. It stops short of stating when to prefer design.similar_site or search.unified instead, so no explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
design.similar_siteARead-onlyIdempotent
URLを入力として、DB内の類似デザインのWebサイトを検索します。指定URLのページのセクションembedding(DINOv2 vision + e5-base text)のmean poolingでページレベルの代表ベクトルを生成し、pgvector HNSW検索で類似サイトを発見します。RRF 3-source fusion(text 40% + vision 30% + fulltext 30%)で総合スコアを算出。 / Searches for similar website designs in DB given a URL. Generates page-level representative vectors via mean pooling of section embeddings (DINOv2 vision + e5-base text) and finds similar sites using pgvector HNSW search.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | 検索対象のURL。DB内のweb_pagesに存在する必要があります(未分析URLは404) | |
| limit | No | 取得件数(1-20、デフォルト: 5) | |
| include_details | No | 詳細情報(共通パターン・差分)を含めるか(デフォルト: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint and idempotentHint. The description adds rich context: embedding methods (DINOv2 vision, e5-base text), mean pooling, pgvector HNSW search, and RRF fusion with percentages, far exceeding annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is bilingual and includes detailed technical steps, but it is well-structured with purpose first. Slightly verbose but still clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description thoroughly explains the search methodology and parameter constraints. However, it lacks explicit description of the return format or ranking, which would be helpful given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds crucial constraints: 'url must exist in web_pages' and explains 'include_details' as common patterns/differences, adding value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'search' and the resource 'similar website designs'. It differentiates from sibling tools like 'design.search_by_image' by specifying URL input and embedding technique.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parameter description for 'url' specifies it must exist in DB, but there is no explicit when-to-use or alternatives compared to siblings. Usage guidance is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
layout.generate_codeAIdempotent
セクションパターンからReact/Vue/Svelte/Astro/HTMLコードを生成します。パターンIDを指定して、選択したフレームワーク(React, Vue, Svelte, Astro, HTML)でコードを出力できます。TypeScript/JavaScript、Tailwind CSS/Vanilla CSSの選択も可能です。
| Name | Required | Description | Default |
|---|---|---|---|
| options | No | コード生成オプション | |
| patternId | Yes | セクションパターンID(UUID形式、必須) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide idempotentHint=true, and the description aligns with that. However, the description does not add additional behavioral context such as whether code is persisted or just returned, authentication needs, or side effects. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single paragraph, front-loaded with purpose, no extraneous words. Every sentence adds value. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main purpose and parameters. However, it omits the output format (no output schema) and does not explain how to obtain patternId (referring to sibling tools). Given schema richness and nested complexity, more context would improve completeness, but it's adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description restates some parameter options (framework, typescript, tailwind) but adds no new meaning beyond the schema. Nested options and their interrelations are not elaborated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('generate code'), the input ('section patterns' via patternId), and the output frameworks (React, Vue, etc.). It uniquely positions the tool among siblings by focusing on code generation, not ingestion or inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates usage for generating code from patterns, but it lacks explicit guidance on when to use this tool versus alternatives (e.g., layout.search for finding patterns). No 'when not to use' or context for selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
layout.ingestA
Fetch HTML/screenshot from URL for layout analysis. SSRF protection blocks private IPs/metadata services. HTML is sanitized.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Target URL (https:// or http://) | |
| options | No | Options | |
| source_type | No | Source type: award_gallery or user_provided | user_provided |
| usage_scope | No | Usage scope: inspiration_only or owned_asset | inspiration_only |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true, and idempotentHint=false, so the description's real contribution is safety behavior: SSRF protection blocking private IPs/metadata services and HTML sanitization. That is genuinely useful pre-call context an agent cannot infer from annotations or schema. It stops short of disclosing side effects such as database persistence (save_to_db), browser process behavior, or latency/timeout cost on heavy JS sites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with zero filler: what it fetches, the security constraint, and a data-handling note. Nothing is redundant or buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex (nested options object with browser, screenshot, CSS-fetching, and DB-persistence controls, and a save_to_db -> motion.detect linkage), and the description covers only purpose plus security posture. It omits the DB-first versus response-returning workflow distinction and the fact that ingestion can persist artifacts, which are the main ways an agent could misconfigure this call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the 25+ nested options are individually documented with ranges, defaults, and enums, so the schema carries parameter semantics. The description adds no parameter-level meaning beyond noting that returned HTML is sanitized and that fetching may yield a screenshot. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource ('Fetch HTML/screenshot from URL') plus the downstream intent ('for layout analysis'), so the agent knows this is an ingestion step, not an analysis step. It does not distinguish itself from sibling ingestion/analysis tools like layout.inspect, layout.batch_ingest, or responsive.capture, so sibling differentiation is missing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use, when-not-to-use, or alternative routing; nothing says whether this precedes layout.inspect, when responsive.capture is preferable, or when to enable save_to_db versus the DB-first workflow. The only implied guidance comes from the phrase 'for layout analysis' and does not resolve any choice between siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
layout.inspectBRead-onlyIdempotent
Parse HTML and extract section structure, grid, typography info
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | WebPage ID (from DB) | |
| html | No | Direct HTML input | |
| options | No | Parse options |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. Description adds no further behavioral details beyond what's in the schema options, missing opportunities to explain output structure or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with front-loaded verb and clear object. No unnecessary words, highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema provided. Description covers the main extraction types but does not specify return format or additional behaviors. Adequate but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions. The description does not add new meaning beyond the schema, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool's verb ('Parse HTML and extract section structure, grid, typography info') and resource. It distinguishes from siblings like layout.ingest or layout.search by focusing on inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like layout.ingest or layout.search. Context is implied but not elaborated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
layout.searchBRead-onlyIdempotent
セクションパターンを自然言語クエリでセマンティック検索します。日本語・英語の両方に対応しています。hero、feature、cta、testimonial、pricing、footer等のセクションタイプでフィルタリングできます。use_vision_search=trueでvision_embeddingを使用したハイブリッド検索(RRF: 60% vision + 40% text)が可能です。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 取得件数(1-50、デフォルト: 10) | |
| query | Yes | 検索クエリ(日本語または英語、1-500文字) | |
| offset | No | オフセット(0以上、デフォルト: 0) | |
| filters | No | 検索フィルター | |
| profile_id | No | 嗜好プロファイルID(検索結果のリランキングに使用) / Preference profile ID (used for search result reranking) | |
| includeHtml | No | HTMLスニペットを含めるか(デフォルト: false)- レガシー互換、include_html推奨 | |
| search_mode | No | 検索モード。text_only: text_embeddingのみを使用(デフォルト)。vision_only: vision_embeddingのみを使用。combined: 両方を使用してRRF統合検索。 | text_only |
| include_html | No | HTMLスニペットを含めるか(デフォルト: false)- snake_case正式形式 | |
| include_preview | No | サニタイズ済みHTMLプレビューを含めるか(デフォルト: true) | |
| project_context | No | プロジェクトコンテキスト解析オプション。プロジェクトのデザインパターンを検出し、検索結果の適合度を評価します。 | |
| use_vision_search | No | Vision検索を有効化。vision_embeddingを使用したセマンティック検索を行います(デフォルト: false) | |
| multimodal_options | No | マルチモーダルオプション。search_mode='combined'時のRRF統合パラメータ。 | |
| preview_max_length | No | HTMLプレビューの最大文字数(100-1000、デフォルト: 500) | |
| auto_detect_context | No | クエリから業界・スタイルコンテキストを自動推論し、結果をブーストします。推論されたコンテキスト(業界: technology/ecommerce/healthcare等、スタイル: minimal/bold/corporate等)にマッチする結果の類似度スコアが最大0.15ブーストされます(デフォルト: true) | |
| vision_search_query | No | Vision検索クエリ(use_vision_search=true時に使用) | |
| vision_search_options | No | Vision検索オプション(use_vision_search=true時に使用) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so the safety profile is clear. The description adds useful behavioral context about search modes and hybrid RRF weighting, but it does not describe return format, pagination, rate limits, or authentication needs. With annotations covering the core safety aspects, this is an adequate but not rich disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, front-loaded with the core purpose and followed by key capabilities. It is efficient and avoids unnecessary repetition, though it could be slightly better structured (e.g., separating filters from search modes).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 16 parameters, nested objects, and no output schema, the description covers only a fraction of the functionality. It highlights section type filtering and vision search but omits significant features like tags/audience/industry filters, project context, auto-detect context, and preview options. The rich schema compensates somewhat, but the description is not complete enough for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description mentions some parameters (section type filter, use_vision_search, hybrid weights) but adds little beyond what the schema already documents in detail. It does not clarify the many other parameters like profile_id, project_context, or auto_detect_context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (semantic search) and resource (section patterns), and mentions key capabilities like Japanese/English support, section type filtering, and vision search. It is clear what the tool does, but it does not explicitly differentiate itself from the many sibling search tools (e.g., search.unified, part.search, design.search_by_image).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists capabilities but provides no guidance on when to use this tool versus alternatives. There are no exclusions, no named alternatives, and no conditions that would select this tool over the many other search tools available. The agent is left to infer usage from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
motion.detectCRead-onlyIdempotent
Detect/classify motion patterns from web page. Parses CSS animations, transitions, keyframes. Warns about performance/accessibility issues.
| Name | Required | Description | Default |
|---|---|---|---|
| css | No | Additional CSS content (max 5MB) | |
| url | No | Target URL for video/runtime/hybrid modes. Required when detection_mode='video', 'runtime', or 'hybrid'. | |
| html | No | HTML content (direct, max 10MB) | |
| pageId | No | WebPage ID (UUID, from DB) | |
| baseUrl | No | Base URL for resolving relative CSS paths (required if fetchExternalCss is true) | |
| timeout | No | Overall timeout in milliseconds (30000-600000, default: 180000 = 3 minutes). On timeout, returns partial results with warnings (graceful degradation). | |
| verbose | No | Verbose mode: include rawCss (default: false) | |
| save_to_db | No | Save detected patterns to motion_patterns table with embeddings (default: true) | |
| maxPatterns | No | Max patterns to detect (default: 100) | |
| minDuration | No | Minimum duration to detect (ms, default: 0) | |
| min_severity | No | Minimum severity level to include in warnings (default: info) | info |
| detection_mode | No | Detection mode: 'css' (requires html/pageId) for static CSS parsing without browser, 'video' (default, requires url) for visual motion detection with frame capture, 'runtime' (requires url) for JS-driven animations, 'hybrid' (requires url) for CSS+runtime combined. | video |
| includeSummary | No | Include summary (default: true) | |
| includeWarnings | No | Include warnings (default: true) | |
| fetchExternalCss | No | Fetch external CSS from <link> tags (default: true) | |
| externalCssOptions | No | Options for external CSS fetching | |
| includeStyleSheets | No | Parse stylesheets (default: true) | |
| includeInlineStyles | No | Parse inline styles (default: true) | |
| detect_js_animations | No | Enable JavaScript animation detection via CDP + Web Animations API. Requires Playwright. Default: false (disabled for performance). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly and idempotent, but description is misleading by only mentioning CSS parsing, while tool supports multiple detection modes (video, runtime, hybrid) and has network dependencies. Missing crucial behavioral traits like graceful degradation on timeout, dependency on Playwright for JS animation detection, and requirement for baseUrl when fetching external CSS. Description does not add value beyond annotations; it contradicts the full scope of the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, very concise and front-loaded with main purpose. However, it sacrifices necessary detail for extreme brevity, missing critical behavioral context. Still, structure is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given tool complexity (19 params, multiple modes, no output schema), description is insufficient. Does not explain detection modes, required inputs (url vs html vs pageId), return format (list of patterns? warnings?), or side effects like saving to DB (save_to_db param). Agent cannot fully understand tool without reading all parameter descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. Description adds no parameter-level meaning beyond 'CSS animations, transitions, keyframes' which only hints at detection_mode. Does not help agent understand parameter relationships or required inputs for different modes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Detect/classify motion patterns from web page' with specific mention of CSS animations, transitions, keyframes, and warnings. Clearly identifies the action and resource, but does not explicitly distinguish from sibling tools like motion.search, which is implied by different verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. Does not mention prerequisites, such as requiring a pageId or URL depending on detection_mode, nor any conditions for using different modes. Agent lacks context for appropriate invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
motion.searchARead-onlyIdempotent
モーションパターンを類似検索、または実装コードを生成します。action: search(デフォルト)で検索、action: generateでCSS/JS実装コードを生成します。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 結果制限(1-50、デフォルト: 10)。action: searchで使用。 | |
| query | No | 検索クエリ(自然言語、1-500文字)。action: searchで使用。 | |
| action | No | アクション: search(デフォルト)= モーション検索、generate = 実装コード生成 | search |
| format | No | 出力フォーマット(デフォルト: css)。action: generateで使用。 | css |
| filters | No | 検索フィルター。action: searchで使用。 | |
| options | No | 生成オプション。action: generateで使用。 | |
| pattern | No | モーションパターン定義。action: generateで必須。 | |
| profile_id | No | 嗜好プロファイルID(検索結果のリランキングに使用) / Preference profile ID (used for search result reranking) | |
| minSimilarity | No | 最小類似度しきい値(0-1、デフォルト: 0.5)。action: searchで使用。 | |
| samplePattern | No | サンプルパターンで類似検索。action: searchで使用。 | |
| js_animation_filters | No | JSアニメーション検索フィルター。action: searchで使用。 | |
| include_js_animations | No | JSアニメーションパターンを検索結果に含める(デフォルト: true)。action: searchで使用。 | |
| include_implementation | No | 検索結果に実装コード(@keyframes, animation, tailwindクラス)を含める(デフォルト: false)。action: searchで使用。 | |
| webgl_animation_filters | No | WebGLアニメーション検索フィルター。action: searchで使用。 | |
| include_webgl_animations | No | WebGLアニメーションパターンを検索結果に含める(デフォルト: true)。action: searchで使用。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, idempotentHint=true, and openWorldHint=false, covering the safety profile. The description adds that generate produces code, but does not mention rate limits, auth needs, or side effects beyond what annotations imply. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose and action distinctions. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich schema, annotations, and lack of output schema, the description provides enough context for an agent to choose between search and generate. It could explicitly note that generate requires the `pattern` parameter, but the schema covers that requirement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 15 parameters are fully documented in the schema. The description adds no parameter-specific semantics beyond naming the actions, which is baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states two specific actions: similarity search for motion patterns and generation of implementation code. It distinguishes the actions with their names and defaults, but does not differentiate this tool from siblings like motion.detect or layout.search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains when to use each action (search vs generate) but gives no guidance on when to use this tool versus alternative search or generation tools. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
narrative.searchBRead-onlyIdempotent
世界観・レイアウト構成でセマンティック検索します。自然言語クエリ(例: "サイバーセキュリティ感のあるダークなデザイン")または768次元Embeddingで検索可能。Hybrid Search(Vector + Full-text)でRRF統合。
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | 検索クエリ(queryまたはembeddingのいずれか必須) | |
| filters | No | ||
| options | No | ||
| embedding | No | 直接Embedding指定(768次元、queryまたはembeddingのいずれか必須) | |
| profile_id | No | 嗜好プロファイルID(検索結果のリランキングに使用) / Preference profile ID (used for search result reranking) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint and idempotentHint, so core safety is covered. Description adds value by explaining search modes (hybrid, RRF) but does not disclose return format or pagination behavior. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences in Japanese, front-loading the purpose. No extraneous information, though could benefit from more structured detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters, no output schema, and moderate complexity (hybrid search, filters, reranking), the description provides a good overview but lacks details on filters, profile_id, result structure, and pagination. Adequate but not fully comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 60% description coverage (moderate), but the description does not add significant meaning beyond schema. It mentions query/embedding and hybrid search, but filters and options are not further explained. Baseline 3 given schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it performs semantic search on worldview/layout composition using natural language or embeddings, with hybrid search. Implicitly differentiates from siblings like layout.search or part.search by focusing on worldview, but does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs siblings (e.g., background.search, search.unified) or when to choose query vs embedding. Does not specify prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page.analyzeARead-onlyIdempotent
Analyze a web page URL with layout detection, motion pattern extraction, and quality evaluation. Executes layout.ingest, motion.detect, and quality.evaluate in parallel and returns unified results. Supports MCP streaming progress via _meta.progressToken for real-time phase notifications.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Target URL to analyze (required) | |
| async | No | Async mode (default: auto). true: enqueue a BullMQ job and return a jobId immediately (poll with page.getJobStatus). false: synchronous processing. When omitted, auto-enabled if Vision is on and Redis is available (Vision LLM exceeds the MCP timeout in CPU mode). Requires Redis when true. | |
| summary | No | Return summary response (default: true). Set to false for full details. | |
| timeout | No | Overall timeout in ms (default: 600000) | |
| features | No | Feature flags for analysis (default: all true) | |
| waitUntil | No | Page load completion criteria (default: networkidle) | networkidle |
| auto_retry | No | Enable staged auto-retry on HTML fetch failure (default: true). Retries with progressively longer timeouts and relaxed waitUntil. | |
| sourceType | No | Source type: award_gallery or user_provided (default) | user_provided |
| usageScope | No | Usage scope: inspiration_only (default) or owned_asset | inspiration_only |
| max_retries | No | Maximum retry attempts when auto_retry is true (default: 3). | |
| auto_timeout | No | Enable Pre-flight Probe for dynamic timeout calculation (v0.1.0). Analyzes page complexity (WebGL, SPA, heavy frameworks) before analysis and calculates optimal timeout. Results are included in preflightProbe response field. | |
| layout_first | No | Layout-first mode for WebGL/Three.js sites (default: auto). auto: prioritise layout when WebGL is detected. always: always prioritise layout. never: legacy parallel processing. | auto |
| auto_snapshot | No | Auto-save design snapshot after analysis (default: false). Creates a point-in-time design snapshot record. | |
| layoutOptions | No | Layout analysis options | |
| layoutTimeout | No | Per-phase timeout for layout analysis in ms (default: 120000). | |
| motionOptions | No | Motion detection options | |
| motionTimeout | No | Per-phase timeout for motion detection in ms (default: 300000). | |
| visionOptions | No | Vision CPU completion-guarantee options (Phase 3). Controls Vision model (Ollama llama3.2-vision) inference timeout, image optimisation, CPU forcing, and graceful degradation. | |
| qualityOptions | No | Quality evaluation options | |
| qualityTimeout | No | Per-phase timeout for quality evaluation in ms (default: 60000). | |
| partial_results | No | Allow partial results on timeout (default: true). When true, returns results from completed phases on timeout. | |
| narrativeOptions | No | Narrative analysis options. Analyzes the page's worldview/atmosphere and layout structure. enabled=true to activate. | |
| timeout_strategy | No | Timeout strategy. strict: fail completely on timeout. progressive: return partial results on timeout (default). | progressive |
| responsiveOptions | No | Responsive layout analysis options. Captures layouts at multiple viewport sizes (desktop/tablet/mobile) and detects differences in typography, spacing, navigation, and layout structure. | |
| performanceOptions | No | Performance evaluation options (v0.3.0 Phase 7.5b, opt-in). Core Web Vitals (LCP/FID/CLS/INP/TTFB) measurement. Timeout: 40s. Disabled by default. | |
| respect_robots_txt | No | Respect robots.txt (RFC 9309). Set to false to ignore. | |
| accessibilityOptions | No | Accessibility audit options (v0.3.0 Phase 7.5a, opt-in). WCAG 2.1 AA compliance audit via axe-core. Timeout: 10s. Disabled by default. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and idempotentHint, and the description usefully adds that execution is parallel and that progress is streamed via _meta.progressToken. It omits material behaviors the agent would want: default persistence to the database (saveToDb defaults true in most sub-options), Vision LLM cost/latency, and the async job handoff to page.getJobStatus.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the verb and resource, then composition, then the streaming detail. No filler and no restatement of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 27-parameter orchestrator with deeply nested options and no output schema, the description is thin: it does not characterize the unified result shape, the async job lifecycle, or the default-on DB writes and Quick-vs-full summary mode. It covers the headline purpose but not enough of the operational surface for a tool this complex.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across 27 parameters, so the schema carries the parameter burden and the baseline is 3. The description adds nothing about parameter semantics apart from mentioning _meta.progressToken, which is not even an input property.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (analyze) and resource (web page URL) plus the three concrete analyses performed (layout detection, motion extraction, quality evaluation). It also names the exact sibling tools it composes (layout.ingest, motion.detect, quality.evaluate), making the orchestrator-vs-single-phase distinction explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
By saying it runs the three sibling tools in parallel and returns unified results, it implicitly tells the agent to use it when all phases are wanted and to use the individual tools otherwise; the features flags reinforce that phases can be selectively disabled. It stops short of an explicit 'do not use this if you only need layout' exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page.batch_analyzeA
Batch analyze multiple URLs in parallel. Submits all URLs as async BullMQ jobs and returns immediately with a batch ID.
Features:
Up to 50 URLs per batch
Configurable concurrency (1-5, default: 3)
SSRF validation for all URLs before submission
Graceful degradation: individual failures don't affect the batch
Progress tracking via page.getJobStatus(batch_id)
Rate limiting within analysis tier (10 RPM)
Use page.getJobStatus with batch_id to poll for results.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | Target URLs to analyze (1-50) | |
| timeout | No | Batch-level timeout in ms (default: 1800000 = 30min) | |
| features | No | Shared analysis features (default: all enabled) | |
| on_error | No | Behavior on individual job failure: 'skip' (continue) or 'abort' (stop batch) | |
| concurrency | No | Parallel jobs within batch (1-5, default: 3) | |
| layoutOptions | No | Shared layout options for all URLs | |
| respect_robots_txt | No | Respect robots.txt (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, openWorldHint=true), the description discloses async/non-blocking behavior, the 50-URL cap, concurrency bounds, SSRF pre-validation, per-URL failure isolation, and a 10 RPM tier rate limit. These are exactly the operational facts an agent needs to avoid mis-calling an async batch tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The lead sentence front-loads the core behavior and the bullets are scannable. There is mild redundancy: progress tracking via page.getJobStatus appears both as a bullet and as a closing sentence, and 'BullMQ' is an implementation detail that does not help tool selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter tool with nested objects and no output schema, the description covers the important contract: it returns immediately with a batch ID and results are retrieved via page.getJobStatus. It does not describe what the polled result payload contains or whether partial results are visible mid-batch, which is the main remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented, and the description mostly restates schema facts (concurrency 1-5 default 3, 50-URL cap). It does add a little meaning by tying 'graceful degradation' to the on_error='skip' behavior and by noting SSRF validation applies to the urls array, but timeout, features, and layoutOptions get no added explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource with scope: batch-analyze multiple URLs in parallel, submitted as async jobs, returning a batch ID immediately. That clearly separates it from the single-URL sibling page.analyze, though it never names page.analyze as the alternative, so the differentiation is inferred rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear usage path: submit up to 50 URLs, then poll page.getJobStatus with the returned batch_id for results. What is missing is an explicit exclusion rule such as 'for a single URL use page.analyze instead', which would make routing unambiguous among 27 siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page.getJobStatusARead-onlyIdempotent
Check the status of an async page analysis job or of a batch.
Pass exactly one of:
job_id: the job ID returned by page.analyze(async=true)
batch_id: the batch ID returned by page.batch_analyze
Returns for job_id:
Job state (waiting, active, completed, failed)
Progress percentage (0-100)
Result summary when completed
Error details when failed
Returns for batch_id:
Batch state (waiting, active, completed, failed, partial)
Progress percentage (0-100)
Summary (total, completed, failed, skipped counts)
Individual job results with states and webPageIds
Note: Requires Redis to be running. Jobs are retained for 24 hours after completion; batches for 48 hours.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | No | The job ID returned by page.analyze(async=true). Do not combine with batch_id. | |
| batch_id | No | The batch ID returned by page.batch_analyze. Do not combine with job_id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/closed-world annotations, the description discloses the Redis dependency, the 24-hour job and 48-hour batch retention windows, the full set of possible states for each path, and what each return shape contains. This is exactly the kind of operational context annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in one line, then two clearly labeled blocks separate the job_id path from the batch_id path, each with a bulleted return summary. No sentence is redundant, and the mutual-exclusion constraint is stated before the return details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden itself and does so thoroughly for both modes, including state enumerations and batch summary counts. The Redis prerequisite and retention limits round out everything an agent needs to call and interpret this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3, but the description adds value by tying each parameter to the specific sibling tool that produces it and reiterating the mutual-exclusion rule. It stops short of explaining behavior for malformed or expired IDs, which would have pushed it higher.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names a specific verb ("Check the status") and two concrete resources ("async page analysis job" and "batch"), which cleanly separates it from page.analyze and page.batch_analyze, the tools that create those jobs. An agent can identify the tool's role without inspecting the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly routes usage: pass exactly one of job_id (from page.analyze with async=true) or batch_id (from page.batch_analyze), which tells the agent where each ID originates and that they are mutually exclusive. It lacks an explicit "when not to use" statement or guidance on polling cadence, keeping it just below the top mark.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
part.compareBRead-onlyIdempotent
2-5個のUIパーツをスタイル・レイアウト・インタラクション・アクセシビリティで並列比較。デフォルトはstyles+layout。各プロパティの同一性も判定。 / Compare 2-5 UI parts on styles, layout, interaction, and accessibility. Default: styles + layout. Reports property-level identity.
| Name | Required | Description | Default |
|---|---|---|---|
| part_ids | Yes | 比較対象パーツID(2-5個) / 2-5 part IDs to compare | |
| compare_aspects | No | 比較観点(デフォルト: styles, layout) / Aspects to compare (default: styles, layout) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered by structured data. The description adds that comparison is property-level identity-aware and defaults to two aspects, but says nothing about error behavior for invalid/unknown part IDs or what a mismatch result looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the operation and cardinality, then aspects and defaults — no wasted clauses. The Japanese/English mirroring doubles the length, but that appears to be an intentional convention across this toolset rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of explaining results, and 'Reports property-level identity' is only a thin hint at the response shape. For a read-only two-parameter tool this is workable but leaves an agent guessing what the comparison output contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters carry their own descriptions, including the minItems/maxItems and enum constraints, so the schema does the heavy lifting. The description restates the 2-5 range and the styles+layout default, adding no syntax or semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('compare 2-5 UI parts') and enumerates the four comparison aspects plus the default subset, so the operation is unambiguous. It does not differentiate itself from the sibling design.compare, which is the one plausible confusion an agent could have.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The default aspects (styles + layout) imply the typical use case, but there is no explicit statement of when to pick this over design.compare or when to inspect parts with part.inspect first. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
part.inspectARead-onlyIdempotent
特定のUIコンポーネントパーツの詳細情報を取得します。スタイル、HTML、バウンディングボックス、インタラクション情報、Embedding有無等を返します。 / Inspect a specific UI component part by ID. Returns styles, HTML, bounding box, interaction info, embedding status, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| part_id | Yes | パーツID(UUID) / Part ID (UUID) | |
| include_html | No | サニタイズ済みHTMLスニペットを含める / Include sanitized HTML snippet | |
| include_embedding | No | Embedding有無情報を含める / Include embedding availability info |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds value by listing specific return fields (styles, HTML, bounding box, etc.), which supplements the annotation's safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, bilingual, and front-loaded with the action. Every word is necessary and no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately lists return fields. Parameter coverage is complete. However, it could briefly mention the required part_id, but the schema already handles that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and provides clear parameter descriptions (part_id as UUID, include_html/embedding as booleans with defaults). The tool description does not add extra semantic meaning beyond what the schema already conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool inspects a UI component part by ID and lists the returned information (styles, HTML, bounding box, etc.). It differentiates from siblings like part.compare and part.search by focusing on inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is for getting detailed info on a single part, but lacks explicit guidance on when to use versus alternatives like part.compare or part.search. No exclusion criteria or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
part.searchBRead-onlyIdempotent
UIコンポーネントパーツ(ボタン、カード、リンク等)をセマンティック検索します。テキストクエリ(e5-base + full-text)によるハイブリッド検索を提供。partType(16種類)やsearchMode(visual/text/hybrid)でフィルタリング可能です。 / Search UI component parts (buttons, cards, links, etc.) by text query. Provides hybrid search via e5-base + full-text. Filterable by partType (16 types) and searchMode (visual/text/hybrid).
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | タグフィルター / Tag filter | |
| limit | No | 取得件数(1-100、デフォルト: 20) / Result limit (1-100, default: 20) | |
| query | No | テキスト検索クエリ(1-500文字) / Text search query (1-500 chars) | |
| offset | No | オフセット(0以上、デフォルト: 0) / Offset (0+, default: 0) | |
| audience | No | ターゲットオーディエンス(例: b2b, b2c, enterprise) / Target audience filter | |
| industry | No | 業種フィルター(例: tech, finance, healthcare) / Industry filter | |
| image_url | No | 画像URLによるビジュアル検索(将来対応予定) / Visual search by image URL (future support) | |
| part_type | No | パーツタイプでフィルター(16種類) / Filter by part type (16 types) | |
| search_mode | No | 検索モード(デフォルト: hybrid) / Search mode (default: hybrid) | hybrid |
| web_page_id | No | WebページIDでフィルター / Filter by web page ID | |
| min_similarity | No | 最小類似度閾値(0-1、デフォルト: 0.3) / Min similarity threshold (0-1, default: 0.3) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly and idempotent. The description adds details about the search models (e5-base, full-text) and future support for image search, but does not disclose additional behavioral traits beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with key information. However, it includes bilingual content that could be streamlined for brevity, but overall it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (11 parameters, no output schema), the description covers the purpose and main filters but does not explain the return format, pagination, or edge cases. Annotations help but the description could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema description coverage is 100%, so the description adds no extra meaning beyond parameter names and types. It mentions partType and searchMode but these are already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs semantic search of UI component parts with hybrid search, and lists filtering options. It distinguishes from sibling tools by focusing on UI parts, but does not explicitly differentiate from other search tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lacks guidance on when to use this tool vs alternatives. It does not mention when not to use it or provide context for choosing it over other search tools on the server.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
performance.evaluateARead-onlyIdempotent
Evaluate web page performance using Core Web Vitals (LCP, FID, CLS, INP, TTFB) via Playwright PerformanceObserver API. Returns a score (0-100), grade, and optional improvement recommendations.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Target URL for performance evaluation (SSRF validated). Must be an external URL (private IPs blocked). | |
| budget | No | Custom performance budget. Defaults to Google recommended values: LCP < 2.5s, CLS < 0.1, FID < 100ms, TTFB < 800ms, INP < 200ms. | |
| include_details | No | Include budget comparisons and improvement recommendations (default: false). Set to true for detailed performance analysis. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds context that it uses Playwright PerformanceObserver, returns a score/grade/recommendations, and mentions optional improvement recommendations, which complements the annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: first defines purpose and method, second describes output. Every word is essential, no redundancy. Perfectly front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers return format (score, grade, recommendations). It explains the evaluation metrics and optional details. Could mention error handling or limitations, but sufficient for the complexity of a performance evaluation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description adds value by explaining the tool's purpose and output format (score 0-100, grade, recommendations), which helps agents understand what parameters like include_details affect. The description enriches the semantics beyond the schema's field-level descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the tool evaluates web page performance using Core Web Vitals (LCP, FID, CLS, INP, TTFB) via Playwright PerformanceObserver API, and returns a score, grade, and recommendations. This clearly distinguishes it from siblings like accessibility.audit or quality.evaluate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for performance evaluation but does not provide explicit guidance on when to use it versus other sibling tools like quality.evaluate or page.analyze. No when-not-to-use or alternative suggestions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quality.evaluateCRead-onlyIdempotent
Evaluate web design quality on 3 axes (originality, craftsmanship, contextuality) with AI cliche detection
| Name | Required | Description | Default |
|---|---|---|---|
| html | No | HTML content (direct, max 10MB) | |
| pageId | No | WebPage ID (UUID, from DB) | |
| strict | No | Strict mode: stricter AI cliche detection (default: false) | |
| context | No | Evaluation context (v0.1.0) | |
| summary | No | Lightweight mode: exclude detailed info and return summary only (v0.1.0 MCP-RESP-01, v0.1.0 default true). When true (default): recommendations max 3, contextualRecommendations max 3, patternAnalysis arrays max 3, axeAccessibility.violations max 5, clicheDetection.patterns max 3. Set to false for full details. | |
| weights | No | Axis weights (sum 1.0) | |
| targetAudience | No | Target audience (e.g. enterprise, consumer, professionals) | |
| targetIndustry | No | Target industry (e.g. healthcare, finance, technology) | |
| use_playwright | No | Use Playwright for runtime aXe accessibility testing (default: false, uses JSDOM) | |
| patternComparison | No | Pattern comparison options for pattern-driven evaluation (v0.1.0) | |
| responsive_evaluation | No | Responsive quality evaluation using Playwright (v0.1.0). Measures touch targets, readability, overflow, and responsive images across viewports. | |
| includeRecommendations | No | Include recommendations (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false, so safety is covered. The description adds only that cliche detection exists and that three axes are scored, but does not disclose the cost/behavioral implications of heavy options such as use_playwright runtime testing, responsive_evaluation network fetches, or the summary vs full-detail mode, which materially change what the agent receives.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tightly written sentence with the core capability front-loaded and zero filler. Nothing is redundant, though the brevity is also the source of the definition's gaps elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter tool with nested objects, browser-based responsive evaluation, Playwright aXe testing, and no output schema, one sentence is far too thin. The agent gets no sense of the report shape (scores, recommendations, cliche patterns, accessibility violations) or the trade-offs between lightweight summary mode and full detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 12 parameters including nested weights, context, and responsive_evaluation are already documented in the schema. The description's mention of the three axes lightly frames the weights object but adds no syntax or interaction detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (evaluate) and resource (web design quality), and enumerates the three scoring axes plus AI cliche detection. This distinguishes it reasonably from siblings like performance.evaluate and accessibility.audit, though it never explicitly contrasts itself with design.compare or design.regression_test.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to invoke this tool, when to use an alternative, or what prerequisites exist. Notably, the tool accepts either raw HTML or a pageId and the description says nothing about which to supply or what happens if neither is given, leaving the agent to infer invocation conditions from the schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
responsive.captureARead-onlyIdempotent
3ビューポート(desktop 1920x1080, tablet 768x1024, mobile 375x812)でWebページを同時キャプチャし、レスポンシブレイアウトの差分を分析します。セクション表示/非表示、フォントサイズ変化、グリッドカラム変化、スペーシング変化を検出し、差分スコア(0-100)を返します。
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | キャプチャ対象URL / Target URL for capture | |
| viewports | No | カスタムビューポート配列(任意、最大4つ。未指定時: desktop 1920x1080, tablet 768x1024, mobile 375x812) / Custom viewports (optional, max 4) | |
| include_diff | No | レスポンシブ差分分析を含めるか(デフォルト: true) / Include responsive diff analysis (default: true) | |
| include_screenshots | No | スクリーンショットサイズを結果に含めるか(デフォルト: false) / Include screenshot sizes in result (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds behavioral details: default viewports, detection of section visibility, font size changes, grid columns, spacing, and a diff score (0-100). No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with action and then specifics. No filler words, efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers tool purpose, default behavior, output score, and detection items. Lacks exact output structure (e.g., JSON format) but sufficient for most agents. Given no output schema, it provides enough context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions. The description adds value by explaining default viewports and the analysis details (diff score, detection items) beyond schema, especially for 'include_diff' and 'url' context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it captures a web page at three viewports and analyzes responsive layout differences, with specific detection items and a diff score. This distinguishes it from siblings like 'responsive.search' which likely searches in captures.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for analyzing responsive design differences but does not explicitly state when to use or avoid this tool, nor mention alternatives like 'design.compare'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
responsive.searchARead-onlyIdempotent
レスポンシブデザイン分析結果をセマンティック検索します。ビューポート間の差異(レイアウト変化、ナビゲーション変化、表示切替等)を自然言語で検索できます。差異カテゴリ、ビューポートペア、ブレークポイント範囲、スクリーンショット差分率でフィルタリング可能です。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 取得件数(1-50、デフォルト: 10) | |
| query | Yes | 検索クエリ(自然言語、1-500文字)。例: "モバイルでハンバーガーメニューに変わるサイト" | |
| offset | No | オフセット(0以上、デフォルト: 0) | |
| filters | No | 検索フィルター | |
| profile_id | No | 嗜好プロファイルID(検索結果のリランキングに使用) / Preference profile ID (used for search result reranking) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds behavioral context about filtering by various attributes (categories, viewport pairs, etc.), which is valuable beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise, front-loaded sentences that cover the tool's purpose and filtering options without redundancy. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with no output schema, the description explains the search domain and available filters but does not hint at the result format (e.g., structured data). Still, it is fairly complete given the complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the schema already documents all parameters. The description mentions filtering capabilities but does not add significant meaning beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it performs semantic search on responsive design analysis results, specifically for differences between viewports. It distinguishes itself from sibling tools like layout.search or design.compare by focusing on responsive differences.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While the description implies when to use (search for responsive differences), it does not explicitly mention when not to use or provide alternatives. However, the context from sibling tool names and the specific focus makes usage fairly clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search.unifiedARead-onlyIdempotent
Layout(セクション)・Part(UIコンポーネント)・Motion(アニメーション)・Background(背景デザイン)・Narrative(世界観)を横断的にセマンティック検索します。個別検索ツールを並列実行し、結果をsimilarityスコア順にマージして返却します。 / Cross-component semantic search across Layout sections, UI Parts, Motion patterns, Background designs, and Narratives. Executes individual search tools in parallel and merges results by similarity score.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | タグフィルター / Tags filter | |
| limit | No | 取得件数(1-50、デフォルト: 10) / Result limit (1-50, default: 10) | |
| query | Yes | 検索クエリ(自然言語、1-500文字) / Search query (natural language, 1-500 chars) | |
| types | No | 検索対象タイプ(デフォルト: 全タイプ) / Target types (default: all types) | |
| audience | No | ターゲットオーディエンスフィルター / Target audience filter (e.g., 'Developer', 'Enterprise') | |
| industry | No | 業種フィルター / Industry filter (e.g., 'SaaS', 'E-commerce') | |
| webPageId | No | WebページIDでフィルター / Filter by web page ID | |
| profile_id | No | 嗜好プロファイルID(検索結果のリランキングに使用) / Preference profile ID | |
| query_type | No | クエリタイプ(auto: 自動分類、visual: 見た目、structural: レイアウト構造、functional: 機能、stylistic: スタイル) / Query type (auto: auto-classify) | auto |
| facet_fields | No | ファセットフィールド指定(指定時はinclude_facetsが暗黙的にtrue)。未指定時は全4フィールド / Facet fields to compute (implicitly enables include_facets). Defaults to all 4 fields when omitted. sectionType: セクション/パーツタイプ, industry: 業種, audience: ターゲット, tags: タグ | |
| include_facets | No | ファセットカウント付与(デフォルト: false)。trueにすると sectionType/industry/audience/tags のカウントを返却 / Include facet counts (default: false). Returns counts for sectionType/industry/audience/tags when true | |
| enable_reranking | No | Cross-Encoderリランキング有効化(デフォルト: true) / Enable Cross-Encoder reranking (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, closed-world), so the description's added value is the execution model: parallel sub-searches plus similarity-ordered merging, which tells the agent the results are aggregated rather than from a single index. It does not disclose failure handling if one sub-search fails, latency/cost expectations, or the shape of each merged result, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences that front-load the scope and then the mechanism; nothing is wasted. The Japanese/English duplication roughly doubles length, but that is a consistent localization pattern rather than padding, and each language version is tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 12 parameters and no output schema, the description carries some burden for describing what comes back, and it only says results are merged and sorted by similarity — it never mentions per-type fields, whether facet counts come back alongside hits, or what happens when `include_facets` is set. Adequate to select and invoke the tool, but thin on response expectations for a fairly rich search surface.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every one of the 12 parameters is already documented in the schema, including enums, defaults, and the implicit include_facets behavior. The description adds no parameter-level meaning (e.g., how `query_type` interacts with `enable_reranking`, or what `profile_id` reranking does), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (cross-component semantic search) and enumerates the five resource domains it spans (Layout, Part, Motion, Background, Narrative). It also explains the mechanism — running the individual search tools in parallel and merging by similarity — which lets an agent distinguish it from siblings like layout.search, part.search, and motion.search without opening their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes clear this is the cross-cutting option that fans out to the individual search tools, implicitly contrasting with the single-domain siblings, and the `types` parameter signals it can also be narrowed. It stops short of an explicit 'use X instead when you only need one component type' rule or any guidance on when the extra cost of a parallel fan-out is warranted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system.healthARead-onlyIdempotent
Run MCP server health check. Checks MCP tool metrics, embedding cache stats, service initialization status, pattern services health, and returns diagnostics.
| Name | Required | Description | Default |
|---|---|---|---|
| include_metrics | No | Include MCP tool metrics (requests, errors, response times). Default: true | |
| include_cache_stats | No | Include embedding cache statistics (hits, misses, hit rate). Default: true | |
| include_tools_status | No | Include tool-level operational status (operational/unavailable, full/fallback mode). Default: true (REFTRIX-HEALTH-01) | |
| include_vision_hardware | No | Include Vision hardware status (force CPU mode, detected hardware type). Default: true (Vision CPU completion guarantee diagnostics) | |
| include_pattern_services | No | Include pattern services health (patternMatcher, benchmarkService, patternDrivenEvaluation). Default: true (REFTRIX-PATTERN-01) | |
| include_initialization_status | No | Include service initialization status (initialized categories, skipped, errors). Default: true (MCP-INIT-02) | |
| include_css_analysis_cache_stats | No | Include CSS analysis cache statistics (layout.inspect/motion.detect cache hits, misses, hit rate). Default: true (MCP-CACHE-02) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds valuable behavioral context by detailing exactly which health components are checked (metrics, cache, initialization, pattern services, etc.), which goes beyond the annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the action, and lists the checks concisely without any redundant or extraneous information. Every sentence adds value with zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains what the tool checks and mentions 'returns diagnostics' but does not specify the return format (e.g., JSON structure). Since there is no output schema, some guidance on the response structure would be beneficial, but the description is sufficient for understanding the tool's purpose. The seven optional parameters are well-covered in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with each parameter having a clear description and defaults. The description provides a high-level grouping of parameters into categories (metrics, cache stats, etc.), which adds some context but does not significantly enhance what the schema already provides for individual parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs a health check on the MCP server, listing specific components checked (metrics, cache stats, initialization, pattern services). It uses a specific verb-resource combination ('Run MCP server health check') and distinguishes from sibling tools that focus on specific functionalities like accessibility, design, or search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is provided on when to use this tool versus alternatives. There is no mention of when not to use it or which scenarios it is best suited for. The description only states what it does, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
15 tool updates
v0.8.0- Removed
brief.validate - Removed
design.regression_test - Removed
design.track_changes - Removed
embedding.quality - Removed
layout.batch_ingest - Changed
page.analyze1 field changed- changed
Input schema / properties / auto_snapshot / descriptionPrevious value: -"Auto-save design snapshot after analysis (default: false). Creates a point-in-time record for design.track_changes comparison."New value: +"Auto-save design snapshot after analysis (default: false). Creates a point-in-time design snapshot record."
- Removed
page.getBatchStatus - Changed
page.getJobStatus3 fields changed- added
Input schema / properties / batch_idAdded value: +{ + "description": "The batch ID returned by page.batch_analyze. Do not combine with job_id.", + "format": "uuid", + "type": "string" +} - changed
Input schema / properties / job_id / descriptionPrevious value: -"The job ID returned by page.analyze(async=true)"New value: +"The job ID returned by page.analyze(async=true). Do not combine with batch_id." - removed
Input schema / requiredRemoved value: -[ - "job_id" -]
- Removed
preference.get - Removed
preference.hear - Removed
preference.reset - Removed
report.generate - Removed
search.facets - Removed
section.inspect - Removed
style.get_palette
13 tool updates
v0.7.0- Changed
brief.validate3 fields changed- added
Input schema / properties / brief / properties / constraints / properties / mustAvoid / maxItemsAdded value: +20 - added
Input schema / properties / brief / properties / constraints / properties / mustHave / maxItemsAdded value: +20 - added
Input schema / properties / brief / properties / tone / maxItemsAdded value: +8
- Changed
data.delete1 field changed- added
Input schema / properties / page_ids / maxItemsAdded value: +100
- Changed
design.compare1 field changed- added
Input schema / properties / dimensions / maxItemsAdded value: +4
- Changed
layout.ingest1 field changed- added
Input schema / properties / options / properties / responsive / properties / viewports / maxItemsAdded value: +10
- Changed
layout.search1 field changed- added
Input schema / properties / vision_search_query / properties / visualFeatures / properties / colors / maxItemsAdded value: +10
- Changed
motion.search3 fields changed- added
Input schema / properties / pattern / properties / properties / items / properties / keyframes / maxItemsAdded value: +100 - added
Input schema / properties / pattern / properties / properties / maxItemsAdded value: +50 - added
Input schema / properties / samplePattern / properties / properties / maxItemsAdded value: +50
- Changed
page.analyze1 field changed- added
Input schema / properties / responsiveOptions / properties / viewports / maxItemsAdded value: +10
- Changed
part.compare1 field changed- added
Input schema / properties / compare_aspects / maxItemsAdded value: +4
- Changed
preference.hear1 field changed- added
Input schema / properties / feedback / maxItemsAdded value: +50
- Changed
quality.evaluate1 field changed- added
Input schema / properties / responsive_evaluation / properties / viewports / maxItemsAdded value: +10
- Changed
search.facets1 field changed- added
Input schema / properties / facet_fields / maxItemsAdded value: +4
- Changed
search.unified2 fields changed- added
Input schema / properties / facet_fields / maxItemsAdded value: +4 - added
Input schema / properties / types / maxItemsAdded value: +5
- Changed
style.get_palette1 field changed- added
Input schema / properties / gradient_options / properties / token_pairs / maxItemsAdded value: +20
1 tool update
v0.6.1- Changed
design.search_by_image1 field changed- changed
Input schema / properties / image / descriptionPrevious value: -"Base64エンコードされた画像データ(data:image/...;base64,... 形式も可)またはHTTPS画像URL"New value: +"Base64エンコードされた画像データ(data:image/...;base64,... 形式も可)またはHTTPS画像URL。受理形式は PNG / JPEG / WebP(先頭バイトで判定)。それ以外は UNSUPPORTED_IMAGE_FORMAT で拒否"
2 tool updates
v0.6.0- Changed
page.analyze32 fields changed- added
Input schema / properties / asyncAdded value: +{ + "description": "Async mode (default: auto). true: enqueue a BullMQ job and return a jobId immediately (poll with page.getJobStatus). false: synchronous processing. When omitted, auto-enabled if Vision is on and Redis is available (Vision LLM exceeds the MCP timeout in CPU mode). Requires Redis when true.", + "type": "boolean" +} - added
Input schema / properties / auto_retryAdded value: +{ + "default": true, + "description": "Enable staged auto-retry on HTML fetch failure (default: true). Retries with progressively longer timeouts and relaxed waitUntil.", + "type": "boolean" +} - added
Input schema / properties / layoutOptions / properties / perSectionVisionAdded value: +{ + "default": true, + "description": "Enable per-section Vision analysis for more accurate semantic search. Requires useVision=true. Increases processing time. (default: true) / セクション単位のVision解析を有効化(処理時間増加、デフォルト: true)", + "type": "boolean" +} - added
Input schema / properties / layoutOptions / properties / scrollVisionAdded value: +{ + "default": true, + "description": "Scroll-position Smart Capture + Vision analysis at section boundaries (async mode only, default: true) / スクロール位置スマートキャプチャ + Vision解析(asyncモードのみ、デフォルト: true)", + "type": "boolean" +} - added
Input schema / properties / layoutOptions / properties / scrollVisionMaxCapturesAdded value: +{ + "default": 10, + "description": "Maximum number of scroll positions to capture (default: 10) / キャプチャするスクロール位置の最大数(デフォルト: 10)", + "maximum": 20, + "minimum": 2, + "type": "number" +} - added
Input schema / properties / layoutOptions / properties / visionBatchSizeAdded value: +{ + "default": 5, + "description": "Maximum concurrent Vision API calls when perSectionVision is enabled (default: 5) / perSectionVision有効時の最大並列Vision API呼び出し数(デフォルト: 5)", + "maximum": 10, + "minimum": 1, + "type": "number" +} - added
Input schema / properties / layoutTimeoutAdded value: +{ + "default": 120000, + "description": "Per-phase timeout for layout analysis in ms (default: 120000).", + "maximum": 300000, + "minimum": 5000, + "type": "number" +} - added
Input schema / properties / layout_firstAdded value: +{ + "default": "auto", + "description": "Layout-first mode for WebGL/Three.js sites (default: auto). auto: prioritise layout when WebGL is detected. always: always prioritise layout. never: legacy parallel processing.", + "enum": [ + "auto", + "always", + "never" + ], + "type": "string" +} - added
Input schema / properties / max_retriesAdded value: +{ + "default": 3, + "description": "Maximum retry attempts when auto_retry is true (default: 3).", + "maximum": 3, + "minimum": 1, + "type": "number" +} - added
Input schema / properties / motionOptions / properties / detect_webgl_animationsAdded value: +{ + "default": true, + "description": "Enable WebGL/Canvas animation detection (Three.js etc.) via frame-based analysis (requires Playwright, default: true) / WebGL/Canvasアニメーション検出(Three.js等、Playwright必要、デフォルト: true)", + "type": "boolean" +} - changed
Input schema / properties / motionOptions / properties / js_animation_options / properties / waitTime / defaultPrevious value: -1000New value: +2000 - changed
Input schema / properties / motionOptions / properties / js_animation_options / properties / waitTime / descriptionPrevious value: -"Wait time in ms after page load before detecting animations (default: 1000)"New value: +"Wait time in ms after page load before detecting animations (default: 2000)" - changed
Input schema / properties / motionOptions / properties / maxPatterns / defaultPrevious value: -100New value: +500 - changed
Input schema / properties / motionOptions / properties / maxPatterns / descriptionPrevious value: -"Maximum patterns to detect (default: 100)"New value: +"Maximum patterns to detect (default: 500)" - added
Input schema / properties / motionOptions / properties / runtime_optionsAdded value: +{ + "description": "Runtime detection options (active when detection_mode='runtime' or 'hybrid') / ランタイム検出オプション(detection_mode='runtime'または'hybrid'時のみ有効)", + "properties": { + "wait_for_animations": { + "default": 5000, + "description": "Animation wait time in ms (default: 5000) / アニメーション待機時間", + "maximum": 30000, + "minimum": 0, + "type": "number" + } + }, + "type": "object" +} - changed
Input schema / properties / motionOptions / properties / timeout / defaultPrevious value: -180000New value: +300000 - changed
Input schema / properties / motionOptions / properties / timeout / descriptionPrevious value: -"Motion detection timeout in milliseconds. MCP Protocol has a 60-second tool call limit. In async mode (page.analyze with async=true), this limit does not apply, allowing longer detection times for heavy WebGL/Three.js sites. (default: 180000 = 3 minutes, max: 600000 = 10 minutes)"New value: +"Motion detection timeout in milliseconds. MCP Protocol has a 60-second tool call limit. In async mode (page.analyze with async=true), this limit does not apply, allowing longer detection times for heavy WebGL/Three.js sites. (default: 300000 = 5 minutes, max: 600000 = 10 minutes)" - added
Input schema / properties / motionOptions / properties / video_optionsAdded value: +{ + "description": "Video recording + frame analysis options (active when detection_mode='video') / 動画録画+フレーム解析オプション(detection_mode='video'時のみ有効)", + "properties": { + "frame_analysis": { + "description": "Frame analysis options / フレーム解析オプション", + "properties": { + "change_threshold": { + "default": 0.005, + "description": "Change detection threshold (0-1, default: 0.005) / 変化検出閾値", + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "fps": { + "default": 15, + "description": "Frame rate (1-30fps, default: 15) / フレームレート", + "maximum": 30, + "minimum": 1, + "type": "number" + }, + "gap_tolerance_ms": { + "default": 50, + "description": "Gap tolerance in ms (default: 50) / ギャップ許容時間", + "maximum": 1000, + "minimum": 0, + "type": "number" + }, + "min_motion_duration_ms": { + "default": 50, + "description": "Minimum motion duration in ms (default: 50) / 最小モーション継続時間", + "maximum": 10000, + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "move_mouse": { + "default": true, + "description": "Perform mouse-move operations (default: true) / マウス移動操作を行うか", + "type": "boolean" + }, + "record_duration": { + "default": 10000, + "description": "Recording duration in ms (default: 10000) / 録画時間", + "maximum": 60000, + "minimum": 1000, + "type": "number" + }, + "scroll_page": { + "default": true, + "description": "Perform scroll operations (default: true) / スクロール操作を行うか", + "type": "boolean" + }, + "timeout": { + "default": 30000, + "description": "Page load timeout in ms (default: 30000) / ページ読み込みタイムアウト", + "maximum": 120000, + "minimum": 1000, + "type": "number" + }, + "viewport": { + "description": "Viewport size / ビューポートサイズ", + "properties": { + "height": { + "maximum": 4096, + "minimum": 240, + "type": "number" + }, + "width": { + "maximum": 4096, + "minimum": 320, + "type": "number" + } + }, + "type": "object" + }, + "wait_until": { + "default": "domcontentloaded", + "description": "Page load completion strategy (default: domcontentloaded) / ページロード完了待機戦略", + "enum": [ + "load", + "domcontentloaded", + "networkidle" + ], + "type": "string" + } + }, + "type": "object" +} - added
Input schema / properties / motionOptions / properties / webgl_animation_optionsAdded value: +{ + "description": "WebGL animation detection options (active when detect_webgl_animations=true) / WebGLアニメーション検出オプション(detect_webgl_animations=true時のみ有効)", + "properties": { + "change_threshold": { + "default": 0.005, + "description": "Change detection threshold (0.001-0.5, default: 0.005) / 変化検出閾値", + "maximum": 0.5, + "minimum": 0.001, + "type": "number" + }, + "sample_frames": { + "default": 50, + "description": "Number of frames to sample (default: 50) / サンプリングフレーム数", + "maximum": 100, + "minimum": 5, + "type": "number" + }, + "sample_interval_ms": { + "default": 100, + "description": "Frame interval in ms (default: 100) / フレーム間隔", + "maximum": 500, + "minimum": 50, + "type": "number" + }, + "timeout_ms": { + "default": 120000, + "description": "Detection timeout in ms (default: 120000) / 検出タイムアウト", + "maximum": 180000, + "minimum": 5000, + "type": "number" + } + }, + "type": "object" +} - added
Input schema / properties / motionTimeoutAdded value: +{ + "default": 300000, + "description": "Per-phase timeout for motion detection in ms (default: 300000).", + "maximum": 300000, + "minimum": 5000, + "type": "number" +} - added
Input schema / properties / narrativeOptionsAdded value: +{ + "description": "Narrative analysis options. Analyzes the page's worldview/atmosphere and layout structure. enabled=true to activate.", + "properties": { + "enabled": { + "default": true, + "description": "Enable narrative analysis (default: true)", + "type": "boolean" + }, + "generateEmbedding": { + "default": true, + "description": "Generate embeddings as part of narrative analysis (default: true)", + "type": "boolean" + }, + "includeVision": { + "default": true, + "description": "Use Vision LLM for higher-precision narrative analysis (default: true)", + "type": "boolean" + }, + "saveToDb": { + "default": true, + "description": "Save narrative analysis results to DB (default: true)", + "type": "boolean" + }, + "visionTimeoutMs": { + "default": 300000, + "description": "Narrative Vision analysis timeout in ms (default: 300000).", + "maximum": 600000, + "minimum": 30000, + "type": "number" + } + }, + "type": "object" +} - added
Input schema / properties / partial_resultsAdded value: +{ + "default": true, + "description": "Allow partial results on timeout (default: true). When true, returns results from completed phases on timeout.", + "type": "boolean" +} - added
Input schema / properties / qualityTimeoutAdded value: +{ + "default": 60000, + "description": "Per-phase timeout for quality evaluation in ms (default: 60000).", + "maximum": 60000, + "minimum": 5000, + "type": "number" +} - added
Input schema / properties / respect_robots_txtAdded value: +{ + "description": "Respect robots.txt (RFC 9309). Set to false to ignore.", + "type": "boolean" +} - added
Input schema / properties / responsiveOptions / properties / breakpoint_resolutionAdded value: +{ + "default": "range", + "description": "Breakpoint resolution: 'range' (CSS media query + VP diff estimate) or 'precise' (binary search, ±8px, 3-5x slower). (default: range) / ブレークポイント解像度(preciseは処理時間3-5倍)", + "enum": [ + "range", + "precise" + ], + "type": "string" +} - changed
Input schema / properties / timeout / defaultPrevious value: -60000New value: +600000 - changed
Input schema / properties / timeout / descriptionPrevious value: -"Overall timeout in ms (default: 60000)"New value: +"Overall timeout in ms (default: 600000)" - changed
Input schema / properties / timeout / maximumPrevious value: -300000New value: +600000 - added
Input schema / properties / timeout_strategyAdded value: +{ + "default": "progressive", + "description": "Timeout strategy. strict: fail completely on timeout. progressive: return partial results on timeout (default).", + "enum": [ + "strict", + "progressive" + ], + "type": "string" +} - added
Input schema / properties / visionOptionsAdded value: +{ + "description": "Vision CPU completion-guarantee options (Phase 3). Controls Vision model (Ollama llama3.2-vision) inference timeout, image optimisation, CPU forcing, and graceful degradation.", + "properties": { + "visionEnableProgress": { + "default": false, + "description": "Enable progress reporting during long Vision processing (default: false).", + "type": "boolean" + }, + "visionFallbackToHtmlOnly": { + "default": true, + "description": "Continue with HTML-only analysis when Vision times out / fails (Graceful Degradation, default: true) / Vision失敗時にHTML解析のみで続行(Graceful Degradation、デフォルト: true)", + "type": "boolean" + }, + "visionForceCpu": { + "default": false, + "description": "Force CPU mode even when a GPU is available (default: false).", + "type": "boolean" + }, + "visionImageMaxSize": { + "description": "Maximum image size in bytes passed to Vision analysis. Larger images are auto-compressed.", + "maximum": 10000000, + "minimum": 1024, + "type": "number" + }, + "visionTimeoutMs": { + "description": "Vision analysis timeout in ms. Auto-calculated from hardware detection when omitted.", + "maximum": 1200000, + "minimum": 1000, + "type": "number" + } + }, + "type": "object" +} - changed
Input schema / properties / waitUntil / defaultPrevious value: -"load"New value: +"networkidle" - changed
Input schema / properties / waitUntil / descriptionPrevious value: -"Page load completion criteria (default: load)"New value: +"Page load completion criteria (default: networkidle)"
- Added
section.inspect
4 tool updates
v0.3.1- Added
design.regression_test - Added
page.batch_analyze - Added
page.getBatchStatus - Added
report.generate
26 tool updates
v0.3.0- Added
accessibility.audit - Added
audit.query - Changed
background.search4 fields changed- added
Input schema / properties / filters / properties / audienceAdded value: +{ + "description": "ターゲットオーディエンス(例: b2b, b2c, enterprise) / Target audience filter", + "maxLength": 100, + "type": "string" +} - added
Input schema / properties / filters / properties / industryAdded value: +{ + "description": "業種フィルター(例: tech, finance, healthcare) / Industry filter", + "maxLength": 100, + "type": "string" +} - added
Input schema / properties / filters / properties / tagsAdded value: +{ + "description": "タグフィルター / Tag filter", + "items": { + "maxLength": 50, + "type": "string" + }, + "maxItems": 10, + "type": "array" +} - added
Input schema / properties / filters / properties / webPageUrlAdded value: +{ + "description": "WebページURLでフィルター / Filter by web page URL", + "format": "uri", + "type": "string" +}
- Added
data.delete - Added
data.export - Added
design.compare - Added
design.search_by_image - Added
design.similar_site - Added
design.track_changes - Added
embedding.quality - Changed
layout.generate_code2 fields changed- changed
Input schema / properties / options / properties / framework / descriptionPrevious value: -"出力フレームワーク(デフォルト: react)"New value: +"出力フレームワーク(デフォルト: react)。Svelte: .svelteファイル、Astro: .astroファイルを生成します。" - changed
Input schema / properties / options / properties / framework / enumPrevious value: -[ - "react", - "vue", - "html" -]New value: +[ + "react", + "vue", + "html", + "svelte", + "astro" +]
- Changed
layout.search5 fields changed- added
Input schema / properties / filters / properties / audienceAdded value: +{ + "description": "ターゲットオーディエンス(例: b2b, b2c, enterprise) / Target audience filter", + "maxLength": 100, + "type": "string" +} - added
Input schema / properties / filters / properties / industryAdded value: +{ + "description": "業種フィルター(例: tech, finance, healthcare) / Industry filter", + "maxLength": 100, + "type": "string" +} - added
Input schema / properties / filters / properties / tagsAdded value: +{ + "description": "タグフィルター / Tag filter", + "items": { + "maxLength": 50, + "type": "string" + }, + "maxItems": 10, + "type": "array" +} - added
Input schema / properties / filters / properties / webPageIdAdded value: +{ + "description": "WebページIDでフィルター / Filter by web page ID", + "format": "uuid", + "type": "string" +} - added
Input schema / properties / filters / properties / webPageUrlAdded value: +{ + "description": "WebページURLでフィルター / Filter by web page URL", + "format": "uri", + "type": "string" +}
- Changed
motion.detect1 field changed- changed
Input schema / requiredPrevious value: -[ - "html" -]New value: +[]
- Changed
motion.search5 fields changed- added
Input schema / properties / filters / properties / audienceAdded value: +{ + "description": "ターゲットオーディエンス(例: b2b, b2c, enterprise) / Target audience filter", + "maxLength": 100, + "type": "string" +} - added
Input schema / properties / filters / properties / industryAdded value: +{ + "description": "業種フィルター(例: tech, finance, healthcare) / Industry filter", + "maxLength": 100, + "type": "string" +} - added
Input schema / properties / filters / properties / tagsAdded value: +{ + "description": "タグフィルター / Tag filter", + "items": { + "maxLength": 50, + "type": "string" + }, + "maxItems": 10, + "type": "array" +} - added
Input schema / properties / filters / properties / webPageIdAdded value: +{ + "description": "WebページIDでフィルター / Filter by web page ID", + "format": "uuid", + "type": "string" +} - added
Input schema / properties / filters / properties / webPageUrlAdded value: +{ + "description": "WebページURLでフィルター / Filter by web page URL", + "format": "uri", + "type": "string" +}
- Changed
narrative.search5 fields changed- added
Input schema / properties / filters / properties / audienceAdded value: +{ + "description": "ターゲットオーディエンス(例: b2b, b2c, enterprise) / Target audience filter", + "maxLength": 100, + "type": "string" +} - added
Input schema / properties / filters / properties / industryAdded value: +{ + "description": "業種フィルター(例: tech, finance, healthcare) / Industry filter", + "maxLength": 100, + "type": "string" +} - added
Input schema / properties / filters / properties / tagsAdded value: +{ + "description": "タグフィルター / Tag filter", + "items": { + "maxLength": 50, + "type": "string" + }, + "maxItems": 10, + "type": "array" +} - added
Input schema / properties / filters / properties / webPageIdAdded value: +{ + "description": "WebページIDでフィルター / Filter by web page ID", + "format": "uuid", + "type": "string" +} - added
Input schema / properties / filters / properties / webPageUrlAdded value: +{ + "description": "WebページURLでフィルター / Filter by web page URL", + "format": "uri", + "type": "string" +}
- Changed
page.analyze3 fields changed- added
Input schema / properties / accessibilityOptionsAdded value: +{ + "description": "Accessibility audit options (v0.3.0 Phase 7.5a, opt-in). WCAG 2.1 AA compliance audit via axe-core. Timeout: 10s. Disabled by default.", + "properties": { + "enabled": { + "default": false, + "description": "Enable accessibility audit (default: false)", + "type": "boolean" + }, + "include_contrast": { + "default": true, + "description": "Include OKLCH contrast ratio check (default: true)", + "type": "boolean" + }, + "level": { + "default": "AA", + "description": "WCAG conformance level (default: AA)", + "enum": [ + "A", + "AA", + "AAA" + ], + "type": "string" + }, + "save_to_db": { + "default": true, + "description": "Save audit results to DB (default: true)", + "type": "boolean" + } + }, + "type": "object" +} - added
Input schema / properties / auto_snapshotAdded value: +{ + "default": false, + "description": "Auto-save design snapshot after analysis (default: false). Creates a point-in-time record for design.track_changes comparison.", + "type": "boolean" +} - added
Input schema / properties / performanceOptionsAdded value: +{ + "description": "Performance evaluation options (v0.3.0 Phase 7.5b, opt-in). Core Web Vitals (LCP/FID/CLS/INP/TTFB) measurement. Timeout: 40s. Disabled by default.", + "properties": { + "budget": { + "description": "Custom performance budget (default: Google recommended LCP<2.5s, CLS<0.1, FID<100ms, TTFB<800ms, INP<200ms)", + "type": "object" + }, + "enabled": { + "default": false, + "description": "Enable performance evaluation (default: false)", + "type": "boolean" + }, + "include_screenshots": { + "default": false, + "description": "Include screenshots in response (default: false)", + "type": "boolean" + }, + "save_to_db": { + "default": true, + "description": "Save evaluation results to DB (default: true)", + "type": "boolean" + } + }, + "type": "object" +}
- Changed
part.search3 fields changed- added
Input schema / properties / audienceAdded value: +{ + "description": "ターゲットオーディエンス(例: b2b, b2c, enterprise) / Target audience filter", + "maxLength": 100, + "type": "string" +} - added
Input schema / properties / industryAdded value: +{ + "description": "業種フィルター(例: tech, finance, healthcare) / Industry filter", + "maxLength": 100, + "type": "string" +} - added
Input schema / properties / tagsAdded value: +{ + "description": "タグフィルター / Tag filter", + "items": { + "maxLength": 50, + "type": "string" + }, + "maxItems": 10, + "type": "array" +}
- Added
performance.evaluate - Removed
project.get - Removed
project.list - Removed
quality.batch_evaluate - Removed
quality.getJobStatus - Added
responsive.capture - Changed
responsive.search4 fields changed- added
Input schema / properties / filters / properties / audienceAdded value: +{ + "description": "ターゲットオーディエンス(例: b2b, b2c, enterprise) / Target audience filter", + "maxLength": 100, + "type": "string" +} - added
Input schema / properties / filters / properties / industryAdded value: +{ + "description": "業種フィルター(例: tech, finance, healthcare) / Industry filter", + "maxLength": 100, + "type": "string" +} - added
Input schema / properties / filters / properties / tagsAdded value: +{ + "description": "タグフィルター / Tag filter", + "items": { + "maxLength": 50, + "type": "string" + }, + "maxItems": 10, + "type": "array" +} - added
Input schema / properties / filters / properties / webPageUrlAdded value: +{ + "description": "WebページURLでフィルター / Filter by web page URL", + "format": "uri", + "type": "string" +}
- Added
search.facets - Added
search.unified
26 tool updates
v0.1.8- Added
background.search - Added
brief.validate - Added
layout.batch_ingest - Added
layout.generate_code - Added
layout.ingest - Added
layout.inspect - Added
layout.search - Added
motion.detect - Added
motion.search - Added
narrative.search - Added
page.analyze - Added
page.getJobStatus - Added
part.compare - Added
part.inspect - Added
part.search - Added
preference.get - Added
preference.hear - Added
preference.reset - Added
project.get - Added
project.list - Added
quality.batch_evaluate - Added
quality.evaluate - Added
quality.getJobStatus - Added
responsive.search - Added
style.get_palette - Added
system.health
TDQS
Scored across 27 tools
Most tools map to distinct resource+action pairs, but there is substantial overlap: search.unified duplicates the seven individual *.search tools, design.search_by_image overlaps design.similar_site, and page.analyze re-runs layout.ingest, motion.detect and quality.evaluate. Descriptions help disambiguate, but an agent must decide between the orchestrator, the batch/async path, and the primitive tools, which creates real misselection risk.
Almost all tools use a consistent namespace.verb_noun pattern (layout.ingest, motion.detect, part.compare, data.delete). The main deviation is page.getJobStatus, which uses camelCase while siblings like page.batch_analyze use snake_case, breaking the otherwise predictable convention.
At 27 tools the surface is heavy for a web-design analysis server, and several tools are redundant (search.unified subsumes the per-resource searches, page.analyze subsumes the analysis primitives). It exceeds the 25-tool threshold where each tool no longer clearly earns its place.
The domain (web design analysis) is well covered: ingestion, layout/motion/responsive detection, semantic search across sections/parts/backgrounds/narratives, code generation, quality/accessibility/performance evaluation, comparison, and GDPR export/delete with audit logging. Minor gaps exist around pattern update/mutation and there is redundancy rather than missing lifecycle coverage.
Maintenance
Related MCP Connectors
One MCP server for all web data. Scrape, search, crawl, and AI research in one install.
Unified 15-tool SEO, SERP, clean Markdown & GEO (LLM citation Share-of-Voice) MCP server.
Screenshot, diff, audit and sitemap-capture any web page — 5 MCP tools for AI agents.
Web MCP: scrape/crawl sites, web search, brand assets, app stores, YouTube, Reddit, Hacker News.
Related MCP Servers
- -licenseNot gradedqualityFmaintenanceThis server provides cloud browser automation capabilities using Browserbase, Puppeteer, and Stagehand. This server enables LLMs to interact with web pages, take screenshots, and execute JavaScript in a cloud browser environment.1,969 npm3,398MIT
- AlicenseAqualityBmaintenanceFirecrawl, the context API for AI agents, as an MCP server. Search the web, scrape any URL, parse PDFs and documents, crawl and map sites, interact with pages in a real browser, run Agent research jobs, monitor pages for changes, and search scientific papers. Returns clean Markdown or structured JSON. Run locally with npx firecrawl-mcp or connect to https://mcp.firecrawl.dev/v2/mcp28158,347 npm7,764MIT

Playwright MCP Serverofficial
AlicenseBqualityBmaintenanceA Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.82510,560,609 npm39,227Apache 2.0- AlicenseAqualityDmaintenanceA comprehensive MCP server providing 15 web tools including search, scraping, screenshots, SEO audits, and DNS/SSL checks through a single installation. It delivers clean, LLM-optimized outputs so AI agents can focus on reasoning rather than parsing raw HTML.1511 npmMIT