phonebook
Phonebook verwandelt Screenshots, die Ihr Team bereits besitzt, in eine Komponenten-Galerie im Storybook-Stil. Kein neuer Testcode, keine manuell zu pflegenden Design Tokens — es rendert das, was bereits in Ihrer Codebasis vorhanden ist, zu einer statischen Website, die Designer ganz ohne Installation öffnen können. Jedes Repository führt Phonebook unabhängig aus; v1 ist single platform, sodass ein Android-Repository oder ein iOS-Repository genau ein Bundle und eine Website erzeugt.
Funktionen
Kein neuer Testcode — verwendet die
@Previews /#Previews, die Sie bereits geschrieben haben.Kein SaaS-Konto — selbst gehostet, läuft vollständig in Ihrer CI oder lokal.
MCP-first — ein Coding-Agent kann das Setup prüfen, die Coverage analysieren, fehlende Previews ergänzen und die Galerie für Sie erstellen.
Intelligente Komponenten-Gruppierung —
component / state-Karten automatisch aus den Preview-Namen abgeleitet, keine Annotation erforderlich.Plattformübergreifend — Android (Roborazzi + ComposablePreviewScanner, läuft auf der JVM, ohne Emulator) und iOS (SnapshotPreviews, läuft auf einem Simulator).
Versionsbewusstes Setup —
init/doctorgleichen die Bibliotheksversionen mit der Kotlin-Version Ihres Projekts ab und erkennen Kotlin-/Roborazzi-Metadaten-Konflikte, bevor sie zu rätselhaften Compiler-Abstürzen führen.
Related MCP server: Storybook MCP
Demo


Eine Galerie, generiert aus samples/ios — component / state-Karten, die aus den eigenen #Previews der App gebildet werden, ohne zusätzliche Annotation.
Funktionsweise
phonebook generateführt die Preview-Rendering-Engine Ihrer Plattform aus und sammelt die Ausgabe in einem Bundle (manifest.json+images/).Android: Roborazzi und ComposablePreviewScanner, ausgeführt auf der JVM via Robolectric. Kein Emulator nötig, funktioniert auf Linux-CI.
iOS: SnapshotPreviews, ausgeführt über
xcodebuild testauf einem Simulator. macOS erforderlich.
phonebook buildverwandelt dieses Bundle in eine statische Website — standardmäßig schreibt esindex.htmldirekt in das Bundle-Verzeichnis (die vorhandenen Bilder werden wiederverwendet, nichts wird kopiert), sodass die Website unter<bundle>/index.htmlentsteht. Mit-o <dir>wird stattdessen alles in ein separates, eigenständiges Website-Verzeichnis kopiert, etwa zum Veröffentlichen an anderer Stelle oder zum späteren Zusammenführen mehrerer Bundles. Reines HTML/CSS/JS, funktioniert vonfile://oder jedem statischen Host.
Installation
npm install -g @stag-build/phonebookbrew install stag-build/phonebook/phonebookOder zuerst das Tap hinzufügen und dann installieren:
brew tap stag-build/phonebook
brew install phonebookFormula-Quelle: stag-build/homebrew-phonebook.
npx @stag-build/phonebook <cmd>Mit einem Coding-Agenten verwenden (empfohlen)
Die meisten Menschen werden die CLI nicht direkt ausführen — Phonebook ist dafür gebaut, von einem Coding-Agenten (Claude Code, Codex usw.) über seinen MCP-Server gesteuert zu werden. Der Agent fügt Previews hinzu, prüft das Setup und erstellt die Galerie für Sie; die CLI darunter ist die Engine, die er aufruft.
Der Server läuft über npx @stag-build/phonebook mcp — kein Installationsschritt nötig. Wählen Sie unten Ihren Client.
claude mcp add phonebook -- npx -y @stag-build/phonebook mcpFügen Sie in ~/.codex/config.toml ein:
[mcp_servers.phonebook]
command = "npx"
args = ["-y", "@stag-build/phonebook", "mcp"]Fügen Sie in Ihrer Claude-Desktop-Konfiguration ein (~/Library/Application Support/Claude/claude_desktop_config.json auf macOS):
{
"mcpServers": {
"phonebook": {
"command": "npx",
"args": ["-y", "@stag-build/phonebook", "mcp"]
}
}
}Fügen Sie in .cursor/mcp.json (Projekt) oder ~/.cursor/mcp.json (global) ein:
{
"mcpServers": {
"phonebook": {
"command": "npx",
"args": ["-y", "@stag-build/phonebook", "mcp"]
}
}
}Fügen Sie dies im Stammverzeichnis des Workspace Ihres Projekts in .codex/config.toml ein. Der Xcode-Agent läuft mit einem minimalen PATH, deshalb umschließt der Befehl npx mit einer Shell, die zuerst die üblichen Verzeichnisse von Homebrew/nvm hinzufügt:
[mcp_servers.phonebook]
command = "/bin/zsh"
args = [
"-lc",
"PATH=/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin; npx -y @stag-build/phonebook mcp"
]
enabled = trueFügen Sie den mcpServers-Block zu ~/Library/Developer/Xcode/CodingAssistant/ClaudeAgentConfig/.claude.json hinzu:
{
"mcpServers": {
"phonebook": {
"command": "/bin/zsh",
"args": [
"-lc",
"PATH=/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin; npx -y @stag-build/phonebook mcp"
]
}
}
}Android Studio (Gemini Agent Mode): derzeit noch nicht unterstützt — die MCP-Integration verbindet sich nur mit „Remote"-httpUrl-Servern, nicht mit lokalen stdio-Prozessen wie dem von Phonebook. Verwenden Sie stattdessen einen der terminalbasierten Clients oben (Claude Code, Codex CLI) aus dem Android-Repository.
Fragen Sie dann einfach im Chat Ihres Android- oder iOS-Repository:
„Nutze das Phonebook-MCP und erstelle einen Katalog für meinen Designer.“
Der Agent übernimmt den Rest — Setup prüfen, fehlende Previews ergänzen, generieren und die Website bauen. Für gezielte Aufgaben bietet er außerdem: check_setup (Setup-Diagnose, wie phonebook doctor), analyze_coverage (Komponenten ohne Previews oder Dark-Varianten), get_preview_guidance, run_generate und run_build.
Schnellstart: Android
Führen Sie zuerst phonebook init aus — das erkennt die Kotlin-Version Ihres Projekts und gibt diese Anleitung mit passenden Bibliotheksversionen aus (z. B. erhalten Kotlin-2.0-Projekte Roborazzi 1.60.0, Kotlin 2.2+ die aktuelle Version). Die Versionen unten gelten für ein Projekt mit aktuellem Kotlin (Beispiel in samples/android/app/build.gradle.kts ansehen):
// app/build.gradle.kts
plugins {
id("io.github.takahirom.roborazzi") // root build.gradle.kts: version "1.72.0" apply false
}
roborazzi {
generateComposePreviewRobolectricTests {
enable = true
packages = listOf("dev.stag.phonebook.sample") // your app's package
}
}
dependencies {
testImplementation("org.robolectric:robolectric:4.14.1")
testImplementation("io.github.takahirom.roborazzi:roborazzi:1.72.0")
testImplementation("io.github.takahirom.roborazzi:roborazzi-compose:1.72.0")
testImplementation("io.github.sergio-sastre.ComposablePreviewScanner:android:0.9.3")
testImplementation("io.github.takahirom.roborazzi:roborazzi-compose-preview-scanner-support:1.72.0")
testImplementation("androidx.compose.ui:ui-test-junit4") // version from your Compose BOM, or pin one
}Fügen Sie eine phonebook.config.json neben settings.gradle.kts ein:
{
"appName": "My Android App",
"platform": "android",
"android": { "modules": [":app"], "variant": "debug" }
}Dann, aus dem Repository, das Phonebook enthält:
npx @stag-build/phonebook generate -C /path/to/your/android/repo
npx @stag-build/phonebook build -C /path/to/your/android/repoÖffnen Sie phonebook-out/index.html.
Schnellstart: iOS
Fügen Sie Ihrem Projekt das SPM-Paket SnapshotPreviews hinzu und ein kleines XCTest-Target, das von SnapshotTest erbt (siehe samples/ios für ein vollständiges funktionierendes Beispiel):
// PhonebookSnapshotTests.swift
import SnapshottingTests
final class PhonebookSnapshotTests: SnapshotTest {
override class func snapshotPreviews() -> [String]? {
return nil // record every #Preview
}
}Fügen Sie phonebook.config.json neben Ihrer .xcodeproj ein:
{
"appName": "My iOS App",
"platform": "ios",
"ios": {
"project": "MyApp.xcodeproj",
"scheme": "MyApp",
"simulator": "iPhone 17 Pro"
}
}Ihr Scheme muss das Snapshot-Test-Target bauen und testen (siehe PhonebookSample.xcscheme im Beispiel). Dann:
npx @stag-build/phonebook generate -C /path/to/your/ios/repo
npx @stag-build/phonebook build -C /path/to/your/ios/repoÖffnen Sie phonebook-out/index.html.
Namenskonvention
Phonebook gruppiert Screenshots aus Ihren vorhandenen Preview-Namen in component / state-Karten — keine Annotation erforderlich. Die vollständigen Regeln und Beispiele finden Sie in docs/naming-convention.md.
Konfiguration
phonebook.config.json:
Key | Typ | Standard | Hinweise |
|
| — | Erforderlich. Wird in der Kopfzeile der Galerie angezeigt. |
|
| — | Erforderlich. |
|
|
| Ausgabeverzeichnis für das Bundle, relativ zur Konfigurationsdatei. |
|
|
| Gradle-Module, die aufgezeichnet werden sollen. |
|
|
| Build-Variante; Phonebook führt |
|
| — | Pfad zur |
|
| — | Pfad zur |
|
| — | Erforderlich. Scheme, das das SnapshotPreviews-Test-Target enthält. |
|
|
| Simulatorgerätename für |
|
| automatisch ermittelt |
|
Sowohl generate als auch build akzeptieren -C <dir> (Projektverzeichnis mit phonebook.config.json). generate nimmt -o <dir> mit an, um das Bundle-Ausgabeverzeichnis zu überschreiben, und --allow-empty, um einen Lauf zu tolerieren, bei dem keine Previews aufgezeichnet werden. Phone kann zusätzlich einen Bundle-Pfad übernehmen. Wenn keiner angegeben ist, wird das Bundle-Verzeichnis des Projekts verwendet, und -o <dir> für das Website-Ausgabeverzeichnis; ohne -o schreibt build index.html direkt in das Bundle-Verzeichnis und verwendet dessen images/ vorhanden (ohne Kopieren) — genau das tun die Schnellstarts oben. Mit -o <dir> werden die Bilder des Bundles stattdessen in ein separates, eigenständiges Website-Verzeichnis kopiert.
phonebook init und phonebook doctor
phonebook init erkennt Ihre Plattform und erstellt phonebook.config.json sowie die Abhängigkeits-Einrichtungssnippets — mit Bibliotheksversionen, die auf Ihr Projekt-Kotlin zugeschnitten sind, und mit Ihrem App-Paket, das bereits ausgefüllt ist. Es ändert jedoch nie selbst Ihre Build-Dateien.
phonebook doctor prüft, ob alles, was generate braucht, verdrahtet ist: Plugin- und Test-Abhängigkeiten (über die Gradle-Version-Kataloge, falls Sie sie verwenden), den packages-Wert des Scanners, die Kotlin-/Roborazzi-Kompatibilität und die Development-Toolchain (JDK/Xcode/Simulator). Fügen Sie --deep hinzu, um zusätzlich die Testquellen zu kompilieren — langsamer, aber maßgeblich, wenn eine statische Prüfung und die Realität nicht übereinstimmen. Unter iOS, wenn SnapshotPreviews verlinkt ist, aber noch keine SnapshotTest-Unterklasse existiert, benennt doctor das genaue Target und den Ordner, in dem sie anzulegen ist (aus der .pbxproj ausgelesen), sodass "Fügen Sie das Feld hinzu" nie ohne Ortsangabe bleibt.
phonebook init --write-snapshot-class ist die eine Ausnahme von der eigentlichen Funktion des Verbots: Wenn die iOS-Prüfung von doctor das Verlinkungs-Target identifiziert und der Quellordner dieses Targets zu den dateisystem-synchronisierten Gruppen von Xcode gehört, schreibt sie direkt <folder>/PhonebookSnapshots.swift — unbedenklich, da ein synchroner Ordner von Xcode automatisch übernommen wird, also keine project.pbxproj-Änderung erzwungen wird. In allen anderen Fällen wird die Aktion verweigert (mit Grund angegeben): noch keine SnapshotPreviews-Verkabelung, ein Projekt ohne Synchronisierung über EWS, oder eine Unterklasse, die bereits existiert.
phonebook mcp startet den MCP-Server — siehe „Mit einem Coding-Agenten verwenden“ oben für die Einrichtung und Beispiel-Prompts.
Anforderungen
Android: JDK 17+. Kein Emulator nötig – Roborazzi rendert über Robolectric auf der JVM, sodass generate auf einem Linux-CI läuft.
iOS: macOS mit installiertem Xcode sowie ein gestarteter oder startbarer Simulator (generate führt xcodebuild test gegen ein benanntes Simulator-Ziel aus). Erfordert einen macOS-Runner in CI.
Siehe docs/ci.md für CI-Rezepte und docs/naming-convention.md für die Namensregeln.
Roadmap
Nach v1 (M5), noch nicht umgesetzt:
Suche und Filter in der generierten Galerie
Multi-Bundle-Merge mit einer Seite-an-Seite-Ansicht (plattformübergreifende Apps)
Versions-Diff zwischen zwei Durchläufen (das Manifest enthält bereits Commit- und Bild-Hashes, um dies zu ermöglichen)
Zusätzliche CI-Rezepte-Dokumentation
License
MIT – siehe LICENSE.
Available Tools
5 toolsanalyze_coverageA
Scan the codebase for UI components and the previews that cover them: which have previews, which states/themes are missing. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| dir | No | Project directory containing phonebook.config.json | . |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, and it explicitly says 'Read-only,' which is the most critical safety trait for this tool. It does not mention potential runtime cost, config lookup behavior, or output shape, but the read-only guarantee is clearly and directly stated.
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 tight sentences with no filler. The main action and expected results are front-loaded, and 'Read-only' is appended as a concise safety qualifier without disrupting flow.
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 low-complexity tool with one optional, fully documented parameter and no output schema, the description provides enough context: what is scanned, what categories are reported, and that it is read-only. It would be slightly stronger with an explicit workflow hint relative to the sibling tools, but nothing essential to invoking it correctly is missing.
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?
The schema has 100% coverage for the single dir parameter: it documents type, default, and the 'Project directory containing phonebook.config.json' expectation. The tool description adds no parameter detail, but because the schema already fully documents it, the baseline of 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 opens with a concrete verb and resource: 'Scan the codebase for UI components and the previews that cover them.' It also names specific outcomes—which components have previews and which states/themes are missing—so an agent can distinguish this analysis task from siblings like run_generate or check_setup.
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 read-only analysis intent is clear, and the wording implies it is useful for assessing preview coverage before generation. However, the description never explicitly says when to prefer analyze_coverage over get_preview_guidance or how it fits relative to run_generate/run_build, so usage guidance remains implicit rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_setupA
Check that the project is correctly set up for phonebook generate (same checks as phonebook doctor): libraries wired, test target present, JDK/Xcode/simulator available.
| Name | Required | Description | Default |
|---|---|---|---|
| dir | No | Project directory containing phonebook.config.json | . |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does communicate that the tool performs checks, names the checks (libraries, test target, JDK/Xcode/simulator), and implies a read-only nature. However, it does not describe failure behavior, exit codes, output format, or whether the tool attempts any fixes, leaving some behavioral ambiguity.
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 one tight, well-structured sentence. It front-loads the purpose, gives the equivalence to `phonebook doctor`, and lists the main checks without wasted 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?
For a simple single-parameter check tool with no output schema and no annotations, the description covers the essential context: what is checked and why. It could be slightly more complete by stating what a successful or failed check returns, but the current level is adequate for selection and 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?
The single parameter `dir` is fully documented in the schema with a clear description and default value, so schema coverage is 100%. The tool description adds no additional parameter semantics, which is acceptable given the schema already handles it.
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 uses a specific verb ('Check') and resource ('project setup'), names the exact command it supports (`phonebook generate`), and enumerates the concrete checks performed. It clearly distinguishes itself from generation/build tools like `run_generate` and `run_build`.
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 clearly implies this is a precondition check for `phonebook generate`, and the reference to `phonebook doctor` provides an equivalence that helps the agent understand behavior. It does not explicitly state 'use before run_generate' or list when not to use it, so it falls just short of full explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_preview_guidanceA
Return the preview naming convention plus a ready-to-paste preview code template for a component, so any agent writes consistent previews.
| Name | Required | Description | Default |
|---|---|---|---|
| states | No | State names, e.g. ["Enabled", "Disabled"] | |
| platform | Yes | Target platform | |
| component | No | Component name, e.g. "Button" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the behavioral disclosure burden. It clearly discloses a non-mutating return ('Return') and the output type (naming convention + template), but it does not describe output format, failure behavior, or prerequisites. For a simple getter this is adequate but incomplete.
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?
One sentence with no filler, and the key deliverable is front-loaded before the outcome clause. Every phrase earns its place.
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?
Only three parameters with 100% schema coverage reduce the burden on the description. However, with no annotations and no output schema, the description could usefully state how platform, states, and component are handled, or when this guidance should be fetched relative to run_generate and run_build. These are gaps but not fatal ones.
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 for this dimension is 3. The description's 'for a component' aligns with the 'component' parameter but adds no value beyond the schema's documented parameters; nothing is said about how states or platform affect the returned template.
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 uses a specific verb ('Return') and identifies a concrete resource ('preview naming convention plus a ready-to-paste preview code template'), with the desired outcome 'so any agent writes consistent previews.' It clearly separates itself from execution-oriented siblings like run_generate and run_build, though it does not explicitly name them.
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 phrase 'so any agent writes consistent previews' implies this tool should be consulted before writing a preview, but there is no explicit statement of when to use it versus siblings or when not to use it. It lists no alternatives and no exclusion conditions, leaving agents to infer its place in the workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_buildA
Build the static gallery site from a bundle, same as phonebook build <bundle>.
| Name | Required | Description | Default |
|---|---|---|---|
| bundle | Yes | Bundle directory produced by run_generate / `phonebook generate` | |
| output | No | Site output directory (default: the bundle directory itself, reusing its images) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states the core action; it does not disclose side effects such as writing into the bundle directory, overwriting output, or requirements. The output default noted in the schema is useful but outside the description, so the description itself carries too little behavioral burden.
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 a single front-loaded sentence with no filler, and the CLI-equivalent note is a compact way to anchor expected behavior. It is appropriately sized for a simple build command.
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 two-parameter tool with full schema coverage, the inputs are adequately specified, but the missing usage routing and side-effect disclosure leave the agent to infer workflow and safety. With no annotations or output schema, a bit more context would make it 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 description coverage is 100%, with both 'bundle' and 'output' documented, so the baseline applies. The description adds no parameter semantics beyond the schema other than echoing 'bundle'.
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 opens with an explicit verb ('Build') and resource ('static gallery site'), and identifies the input ('from a bundle'), which clearly separates it from the sibling generation/analysis/check tools. The CLI alias reinforces the exact operation without ambiguity.
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 'from a bundle' wording and the schema's 'produced by run_generate' hint imply a build-after-generate workflow, but the description does not explicitly say when to use this tool versus siblings like run_generate or analyze_coverage. No when-not or alternative conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_generateB
Run the platform engine to render all previews and produce a bundle (manifest + images), same as phonebook generate.
| Name | Required | Description | Default |
|---|---|---|---|
| dir | No | Project directory containing phonebook.config.json | . |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden of behavioral disclosure. It explains the action and output but does not mention side effects (e.g., writing files to disk), prerequisites (e.g., a valid config file), or what the tool returns. For a generation tool that likely mutates the project directory, this lack of detail is a significant gap.
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 a single sentence that front-loads the action and result, then adds the CLI reference. There is no fluff or redundancy. It could benefit from a second sentence about prerequisites, but it earns a high score for efficiency and clear focus.
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 annotations and no output schema, the description must cover the essentials. It states what the tool does and references the CLI, but it omits return value details, potential side effects, and any environmental requirements. Since the tool is simple (one parameter), the definition is adequate but not fully complete for an agent that has never seen the CLI command.
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?
The schema fully documents the only parameter (`dir`) with a clear description and default value, so the schema does the heavy lifting. The tool description adds no additional context about the parameter, such as path validation or behavior when omitted. Baseline 3 is appropriate given the 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 states a specific verb ('Run the platform engine') and the concrete outcome ('render all previews and produce a bundle (manifest + images)'). It also references the CLI equivalent (`phonebook generate`), which anchors its role. The intended output clearly differentiates it from siblings like run_build or analyze_coverage, even though no explicit comparison is made.
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 when you need to generate previews and a bundle, but it does not state when NOT to use this tool or mention alternatives. The CLI equivalence gives a hint, but there is no explicit context about choosing this over run_build or other sibling tools. It falls at 'implied usage' rather than providing clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose: analyzing coverage, checking setup, providing guidance, generating a bundle, and building the site. There is no meaningful overlap between any of the five tools.
All tool names follow a consistent verb_noun pattern with clear verbs like analyze, check, get, and run. The naming is uniform and predictable.
Five tools is well-scoped for the phonebook preview workflow, covering setup, guidance, analysis, generation, and building without unnecessary extras or missing essentials.
The tools cover the full intended workflow: check environment, learn conventions, analyze coverage, generate previews, and build the gallery. There are no obvious dead ends or significant missing operations for this domain.
Maintenance
Related MCP Connectors
Serves your design system and coding standards to coding agents, so they stop guessing.
Turns any agent into a full agentic application — branded, interactive screens generated at runtime.
Live React design-system APIs, patterns, and code validation so AI agents build real UI, not slop.
Code intelligence platform for AI agents. 20 tools for architecture, security & impact analysis.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI agents to build, test, debug, and interact with Kotlin Multiplatform Mobile (Android/iOS) applications through automated build pipelines, UI automation, crash analysis, and app state inspection.15181MIT

Storybook MCPofficial
AlicenseNot gradedqualityBmaintenanceEnables AI agents to interact with Storybook by exposing UI component information and development workflows through the Model Context Protocol.270MIT- AlicenseAqualityAmaintenanceEnables AI agents to render and screenshot isolated UI components instantly across multiple browsers without a dev server or Storybook.226601MIT
- AlicenseAqualityCmaintenanceTurns AI coding hosts into a guided mobile-UI design tool with design interviews, token contracts, linters, and local browser preview.814MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/stag-build/phonebook'
If you have feedback or need assistance with the MCP directory API, please join our Discord server