Skip to main content
Glama

ComposeBridge 🌉

Real-time on-device visual editor for Jetpack Compose + Model Context Protocol (MCP) server for AI coding agents.
Live UI tuning (<50ms latency), AST-guided surgical source code splicing, and autonomous AI-assisted refactoring.

Kotlin Jetpack Compose Status DevEx Latency Version License Glama MCP M8ven Score compose-bridge on DevHunt

English | العربية


📥 Direct Downloads (v1.1.3)

Package

Asset

Purpose

IDE Plugin (Android Studio / IntelliJ)

📥 ComposeBridgeIntelliJ-1.1.5.zip

Install in IDE: Settings ➔ Plugins ➔ ⚙️ ➔ Install Plugin from Disk...

Compose Runtime Library (Release & Debug)

📦 composebridge-runtime-release.aar

Core registries (~9KB). Required in implementation for production-safe APK builds

Compose Agent Library (Debug Only)

📦 composebridge-agent-release.aar

Visual overlays, touch inspector, and WebSocket bridge. Put in debugImplementation

Python Server & MCP Package

📦 composebridge-server-1.1.5.zip

Modular WebSocket hub & MCP server for AI agents

All-in-One Distribution

📦 ComposeBridge-v1.1.5-AllInOne.zip

Bundles Plugin, Runtime, Agent, and Server together


Related MCP server: uacos

📸 Visual Demo

Watch ComposeBridge visually edit a running Jetpack Compose UI live:

Screenshots

1. Studio ToolWindow & Token Scanner

2. Surgical Pattern Refactoring & Diff

3. Live On-Device Preview & Inspector

Studio ToolWindow

Pattern Refactoring

Live Device Sync


⚡ Quick Start in 60 Seconds

Step 1: Install IDE Plugin

  1. Download ComposeBridgeIntelliJ-1.1.5.zip.

  2. In Android Studio, go to Settings (Preferences) ➔ Plugins ➔ Click the ⚙️ gear icon ➔ Install Plugin from Disk....

  3. Select the zip file and restart Android Studio.

Step 2: Add Dependencies to your Android App

Copy composebridge-runtime-release.aar and composebridge-agent-release.aar into your app module's libs/ folder:

// app/build.gradle.kts
dependencies {
    // 1. Runtime registries: compiles cleanly in both Debug & Release
    implementation(files("libs/composebridge-runtime-release.aar"))

    // 2. Interactive visual inspector: debug builds only
    debugImplementation(files("libs/composebridge-agent-release.aar"))
}

Step 3: Initialize in MainActivity (Debug)

// MainActivity.kt
import com.composebridge.agent.ComposeBridgeAgent

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        
        // Start bridge connection (automatically connects to local hub)
        ComposeBridgeAgent.start(serverUrl = "ws://127.0.0.1:8711")

        setContent {
            // Wrap root content in ComposeBridgeAgent.Root
            ComposeBridgeAgent.Root {
                MyApplicationTheme {
                    MainScreen()
                }
            }
        }
    }
}

Step 4: Start the Bridge & Tune Live

  1. In Android Studio, open the ComposeBridge tool window on the right sidebar and click ▶ Start Bridge (this starts the local server and runs adb reverse tcp:8711 tcp:8711 automatically).

  2. Run your app on your device or emulator.

  3. Tap the floating 🔧 FAB on screen to toggle Design Mode.

  4. Tap any text, color, or dimension to adjust values in real-time!


📐 Architecture & Communication Flow

ComposeBridge coordinates three interconnected components over a fast local loopback interface:

 +--------------------------+                 +----------------------------+
 |   Android Phone / AVD    |                 |   Local WebSocket Hub      |
 |                          |                 |   (Python 3.10+ Daemon)    |
 |  [App UI in Compose]     |                 |                            |
 |            |             |   WebSocket     |   server.py (:8711)        |
 |  [:composebridge-agent]  |<===============>|      ├── Message Router    |
 |    - Visual Touch Overlay|   (Port 8711)   |      ├── AST Splicer       |
 |    - Semantic Inspector  |                 |      └── PatternJournal    |
 |            |             |                 +----------------------------+
 |  [:composebridge-runtime]|                               ||
 |    - TextRegistry        |                               || JSON-RPC
 |    - ThemeRegistry       |                               || (stdio / TCP)
 |    - DimensionRegistry   |                               \/
 +--------------------------+                 +----------------------------+
                                              |   Developer Tools & AI     |
                                              |                            |
                                              |  [Android Studio Plugin]   |
                                              |    - Live Changes Diff     |
                                              |    - Token Split / Scanner |
                                              |  [Autonomous MCP Agents]   |
                                              |    - Antigravity / Claude  |
                                              |    - 27 Standard MCP Tools |
                                              +----------------------------+
  1. On-Device Agent (:composebridge-agent): Injected via ComposeBridgeAgent.Root. Renders non-intrusive hit-testing overlays, extracts semantic metadata, and transmits change requests over local WebSocket (ws://127.0.0.1:8711).

  2. Decoupled Runtime (:composebridge-runtime): Standalone ~9KB runtime containing registry singletons (BridgeTextRegistry, BridgeThemeRegistry, BridgeDimensionRegistry). Ensures production Release builds compile with zero overhead without packaging debug overlays.

  3. Local Bridge Server (server.py): Acts as the central event hub and Kotlin AST manipulation engine. Applies deterministic changes using file write-locks, atomic rewrites, and maintains a byte-level .bridge.bak rollback journal.

  4. Model Context Protocol (MCP Server): Exposes 27 structured tools allowing AI pair programmers (Antigravity, Claude, Cursor) to autonomously analyze token usage, suggest token splits, and execute multi-file refactorings.


🚀 Core Capabilities

Capability

Description

⚡ Instant Live Tuning

Tweak colors, paddings, and string contents with sub-50ms latency. Changes update dynamically without waiting for Gradle rebuilds.

🧠 Semantic Token Intelligence

Detects whether a modified color or dimension is shared globally. Offers Split (create an isolated token for this widget) or Global (update theme-wide).

📝 Text Editing & Auto-Migration

Tap any text element to edit wording directly on device. The AST engine automatically wraps raw strings into BridgeTextRegistry on first edit.

💾 Safe Rollbacks (PatternJournal)

Every surgical edit is backed up byte-for-byte. The Studio Changes tab allows reviewing unified diffs and reverting individual files or all edits with one click.

🤖 Full MCP Server for AI Agents

27 tools supporting token discovery, impact analysis, orphan detection, surgical pattern replacement, and safe Gradle compilation validation.


🤖 AI Agent Integration (MCP)

ComposeBridge exposes 27 deep-inspection and code refactoring tools to any AI assistant supporting the Model Context Protocol (MCP). No physical phone is required to use MCP tools.

💡 Ultra-Lightweight Context Window: ComposeBridge uses Lazy Loading, so 27 MCP tools consume only ~176 tokens (<1% of context window).

Compatible AI Clients:

  • ✅ Google Antigravity IDE

  • ✅ Cursor

  • ✅ Claude Desktop

  • ✅ Windsurf / Continue

Integration Steps:

Step 1: Run the MCP Server

Make sure server dependencies are installed and the server is executable from your server directory:

cd server
pip install -r requirements.txt

Step 2: Configure mcp_config.json

Add the ComposeBridge server configuration to your AI agent's config file (e.g. in ~/.gemini/config/mcp_config.json or your IDE configuration):

{
  "mcpServers": {
    "composebridge": {
      "command": "python",
      "args": ["-u", "C:\Users\thinkpad\StudioProjects\compose-bridge\server\mcp_server.py"],
      "env": {
        "COMPOSEBRIDGE_ROOT": "C:\Users\thinkpad\StudioProjects\MyTeacher-App",
        "PYTHONIOENCODING": "utf-8"
      }
    }
  }
}

⚠️ Important: Any changes made to mcp_config.json require starting a New Chat in your AI agent interface so that all 27 MCP tools are freshly discovered and initialized.

How to set it up in Android Studio / Antigravity:

  1. Open Android Studio / IntelliJ IDEA.

  2. Go to Settings (or Preferences on macOS) → Tools → AI → MCP Servers.

  3. Click on the Installed tab.

  4. Click on the "Import JSON file" button (or "...Add via JSON" depending on your IDE version).

  5. Paste the JSON configuration provided above.

  6. Click OK or Apply.

  7. ⚠️ Crucial: Start a New Chat (or restart the agent) for the new 27 MCP tools to load and become visible.

Overview of MCP Tools (27 Tools):

  • Token Discovery & Analysis: list_tokens, find_token_by_color, get_token_impact, get_token_siblings, get_all_token_groups, list_orphans, get_naming_convention.

  • Surgical Code Editing: set_token, set_text, add_token, rollback_last.

  • Pattern Refactoring: replace_pattern, list_applied_patterns, rollback_pattern, suggest_token_split, detect_conditional_variants.

  • Change Management: list_modified_files, get_file_diff, approve_file_changes, reject_file_changes, approve_all_files, reject_all_files, reject_all_files_force.

  • Build Verification & Sync: run_gradle_build, list_allowed_gradle_tasks, trigger_user_sync, get_sync_status.


⚠️ Known Limitations

  • Platform Target: Live on-device inspection currently supports Android (API 24+). Kotlin Multiplatform Desktop and iOS overlays are in active development.

  • Python Requirement: The local bridge server requires Python 3.10 or newer.

  • USB Port Forwarding: When testing on a physical device over USB, port forwarding is required (adb reverse tcp:8711 tcp:8711). The Studio plugin runs this automatically on startup.

  • Initial Rebuild on New Tokens: When converting a hardcoded literal to an entirely new named token for the first time, one standard Gradle compile is required so the Kotlin compiler emits the new getter bytecode. Subsequent live tweaks to that token are instantaneous.


🔧 Troubleshooting & FAQ

1. The phone shows [WS] Connection failed

  • Ensure the bridge server is running (🟢 Bridge Running in Studio or python server.py in terminal).

  • If using USB, verify ADB reverse is active by running:

    adb reverse tcp:8711 tcp:8711
  • If using Wi-Fi without USB, specify your workstation's LAN IP when calling ComposeBridgeAgent.start(serverUrl = "ws://192.168.1.X:8711").

2. Build error: Duplicate class found in modules

  • Make sure composebridge-runtime-release.aar is added under implementation(...) and composebridge-agent-release.aar is added under debugImplementation(...). Do not include the agent in release configurations.

3. Edits do not show in Android Studio

  • Ensure you have the project root properly set in composebridge.json or pass --project <path> when launching server.py.

  • Check the Changes tab in the ComposeBridge tool window to review pending file diffs.


🤝 Contributing & Community

We welcome contributions! Please review our:


📜 License

Distributed under the Apache License 2.0.

Available Tools

28 tools
add_tokenA
Convert a hardcoded value to a design token.

This tool:
1. Adds a new token definition to AppDimens.kt or AppColors.kt
2. Replaces ONLY the specified line with the new token
3. Does NOT touch any other line in the project

Use list_tokens() first to find hardcoded values that
could become tokens.

Args:
    file: File name (e.g., "DashboardPage.kt")
    line: Line number (1-indexed)
    value: Expected value (e.g., "16.dp" or "0xFF7C3AED")
    token_name: New token name (e.g., "padding_md")
    token_type: "dimension" or "color"
    preferred_token_file: Optional target token file (e.g. "Tokens.kt")
    force_create: ⚠️ force_create bypasses duplicate detection. Use ONLY for testing.

Returns:
    JSON with success status and details.
NameRequiredDescriptionDefault
fileYes
lineYes
valueYes
token_nameYes
token_typeYes
force_createNo
preferred_token_fileNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose key mutation behavior: it adds a definition to AppDimens.kt/AppColors.kt, replaces ONLY the specified line, and touches no other line. It also warns that force_create bypasses duplicate detection. It omits permissions, failure modes, and whether edits enter a pending-approval workflow implied by siblings like approve_file_changes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with purpose, then a tight numbered behavior list, usage note, Args and Returns. The structure is scannable and every section earns its place, though the Returns line adds little given an output schema exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter mutation tool with no annotations, the description covers behavior, all parameters, and a prerequisite step, which is substantial. The main gap is the staged-approval/rollback workflow implied by sibling tools, which is not mentioned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must document all parameters, and it does so via a full Args block. It supplies concrete examples ('16.dp', '0xFF7C3AED', 'padding_md') and enumerates the token_type values ('dimension' or 'color') that the schema itself lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ('Convert a hardcoded value to a design token') and the numbered steps make the operation concrete. It does not explicitly distinguish itself from the nearby set_token sibling, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context via the prerequisite 'Use list_tokens() first to find hardcoded values that could become tokens.' However it offers no when-not guidance and never contrasts add_token with set_token, which an agent could reasonably confuse it with.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

approve_all_filesA
Destructive: Approves ALL pending changes permanently. Removes them from journal.

What it does: Permanently accepts all pending changes in the journal across all modified files.
When to use: When all modifications from recent operations are verified and accepted.
When NOT to use: No rollback after this action. Use approve_file_changes for single files. Use reject_all_files to discard instead.
Side effects: Destructive: Permanently clears all backups and journal entries. Changes cannot be rolled back.
Parameters: None.
Returns:
  JSON string confirming all files approved.
NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and delivers: permanent approval, backup/journal clearing, no rollback, and side-effect scope across all modified files. This is exactly the destructive-operation disclosure an agent needs before invoking.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded destructive warning, then labeled sections that are easy to scan. Slight redundancy between the opening line and 'Side effects', but every statement adds a distinct fact (scope, irreversibility, alternatives).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-param destructive tool with an output schema present, the description covers purpose, usage, alternatives, side effects, and return confirmation. Nothing an agent needs is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so baseline is 4. The description reinforces this with an explicit 'Parameters: None', leaving no ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (approves) and resource (all pending files/changes), and the scope 'ALL' plus 'permanently' distinguishes it from the sibling approve_file_changes. An agent can tell exactly what this does from the first line.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'When to use' and 'When NOT to use' sections, with named alternatives (approve_file_changes for single files, reject_all_files to discard). Routing is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

approve_file_changesA
Approves pending changes for a SPECIFIC file. Removes its entry from journal.

What it does: Marks changes as accepted and discards the backup so the file is no longer in pending state.
When to use: When changes to a specific file have been inspected (via get_file_diff) and verified correct.
When NOT to use: File must be modified. To approve all files use approve_all_files.
Side effects: Clears the journal entry and backup for this file. Modifications remain permanently on disk.
Parameters:
  - file_path: relative to project root (e.g., 'QuickActionsWidget.kt' or 'ui/theme/AppStrings.kt').
Returns:
  JSON string confirming file approval.
NameRequiredDescriptionDefault
file_pathYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses side effects (journal entry and backup cleared, modifications remain permanently on disk) and implies irreversibility by discarding the backup. It stops short of stating outright that the action cannot be undone or naming any permission/auth requirements, which keeps it from 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The labeled sections (What it does / When to use / When NOT to use / Side effects / Parameters / Returns) are front-loaded and scannable, and each carries real information. The Returns section is mildly redundant given an output schema exists, costing it the top score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and a fully opaque schema, the description covers the essentials: effect, prerequisites, side effects, irreversibility implication, and parameter format. Only minor gaps remain (explicit non-reversibility, any auth requirements), and the return-value question is already handled by the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single file_path parameter, so the description must compensate. It does: it specifies the path is relative to the project root and gives two concrete examples ('QuickActionsWidget.kt', 'ui/theme/AppStrings.kt'), which is exactly the format guidance the bare string schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (approves), resource (pending changes), and scope (a SPECIFIC file), plus the mechanical effect of removing the journal entry. It also explicitly contrasts with the sibling approve_all_files, so an agent can distinguish the two without inspecting either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use ('when changes to a specific file have been inspected via get_file_diff and verified correct') and when-NOT-to-use guidance, including the prerequisite that the file must be modified and the alternative tool for the all-files case. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

detect_conditional_variantsA
Detect repeated patterns like:
if (isDark) Color(0xFF818CF8) else AppColors.Primary

Args:
    token_name: optional — filter by base token name.
    
Returns:
    JSON with detected patterns + occurrences + suggestions.
NameRequiredDescriptionDefault
token_nameNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. 'Detect' plus the 'Returns: JSON with detected patterns + occurrences + suggestions' line reasonably conveys a read-only, non-mutating analysis, but it says nothing about permissions, scan scope (which files/workspace), or cost/latency. Nothing contradicts expected behavior, but disclosure is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core verb and an illustrative example, then Args and Returns in clearly labeled blocks with no filler sentences. The code example is long but earns its place by disambiguating what a 'conditional variant' is.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The single parameter is explained and an output schema exists, so the Returns line is largely redundant but harmless. What's missing for a detection tool in a dense sibling set (replace_pattern, suggest_token_split, list_applied_patterns) is any statement of where detection fits in the workflow — e.g., that results feed into `replace_pattern`.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: it states `token_name` is optional and filters by base token name, which is exactly the semantic the bare schema (`type: string`, `default: null`) lacks. Only a single parameter exists, so this is close to complete, though it doesn't specify matching semantics (exact vs substring).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and target ('Detect repeated patterns') and anchors it with a concrete code example (`if (isDark) Color(0xFF818CF8) else AppColors.Primary`), so the agent knows exactly what class of finding this produces. It does not, however, explicitly distinguish itself from sibling tools like `suggest_token_split` or `find_token_by_color`, which the agent must infer from the example.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the example pattern rather than stated: an agent can infer this is for locating hardcoded conditional color branches that should be tokenized. There is no explicit when-to-use statement, no exclusions, and no named alternative (e.g., when to prefer `suggest_token_split` or `replace_pattern` after detection).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_token_by_colorB

Reverse lookup: Find token(s) matching an exact hex color.

NameRequiredDescriptionDefault
hex_colorYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden; it does disclose that matching is on an 'exact' color, ruling out fuzzy/nearest-match behavior, and 'token(s)' signals the result may be plural. It does not state that the operation is read-only or how malformed hex input is handled. Output schema exists, so return-format disclosure is not required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with the key qualifier ('reverse lookup', 'exact hex') front-loaded and no wasted words. It is terse to the point of omitting format detail, but structurally sound.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema covers return values, and plural results are hinted at, so the definition is adequate for a simple lookup. However, with no annotations and no schema parameter description, the accepted hex format and the read-only nature are left undocumented.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and there is one parameter, so the description must compensate. It adds that the value is a hex color and that matching is exact, but does not specify the accepted format (leading '#', case sensitivity, 3- vs 6-digit shorthand), leaving a real gap for the only input.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (find) and resource (token), plus 'reverse lookup' clarifies the direction of the query relative to a normal color lookup. It does not distinguish itself from the sibling list_tokens, but the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Reverse lookup' hints at when the tool applies, but there is no explicit when-to-use guidance, no exclusion of alternatives such as list_tokens, and no stated prerequisites. The agent must infer the routing condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_all_token_groupsA
Read-only. Returns ALL semantic token groups in the project (e.g., 'Actions', 'Dashboard', 'Settings').

What it does: Lists all token groups discovered across design system objects.
When to use: To inspect the high-level semantic grouping of design tokens.
When NOT to use: Use list_tokens for individual tokens. Groups are based on object declarations in AppStrings/DesignSystem.
Side effects: Read-only. No files modified.
Parameters: None.
Returns:
  JSON string with group names, member token counts, and parent objects.
NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses read-only safety and that no files are modified, plus the return shape (group names, member counts, parent objects). It stops short of some details like ordering or whether results are exhaustive across workspace boundaries, but the safety profile is well covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well structured and front-loaded with the key 'Read-only. Returns ALL...' statement. Minor redundancy: 'Read-only' is stated at the top and repeated under 'Side effects', and the return format is listed despite an output schema existing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-param read-only listing tool, the description covers purpose, usage, safety, and return shape. An output schema exists, so the explicit 'Returns' block is somewhat redundant but harmless, and no critical invocation info is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters and the description explicitly states 'Parameters: None.' Baseline is 4 for a 0-param tool, and nothing here contradicts or adds ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (returns/lists) and resource (semantic token groups) with concrete examples ('Actions', 'Dashboard', 'Settings'). It explicitly distinguishes itself from list_tokens, so an agent can tell them apart without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit 'When to use' and 'When NOT to use' sections, and names the alternative (list_tokens) for individual tokens with the reason (groups are based on object declarations). Routing is fully specified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_file_diffA
Read-only. Returns before/after content and unified diff for a specific modified file.

What it does: Computes unified diff comparing original backup (.bridge.bak) with current on-disk content.
When to use: To inspect exact changes before approving (approve_file_changes) or rejecting (reject_file_changes).
When NOT to use: Use list_modified_files first to get valid paths. file_path should match the entry from list_modified_files (relative to project root).
Side effects: Read-only. No files modified.
Parameters:
  - file_path: relative path to project root (e.g., 'QuickActionsWidget.kt' or 'ui/theme/AppStrings.kt').
Returns:
  JSON string with original content, modified content, and unified diff.
NameRequiredDescriptionDefault
file_pathYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the burden, and it does well: it declares read-only behavior, names the .bridge.bak backup source, and confirms no files are modified. It stops short of disclosing edge behavior — e.g. what happens when no backup exists or how large files are handled — which keeps 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Labeled sections (What it does / When to use / When NOT / Side effects / Parameters / Returns) make it scannable and front-loaded. Slight redundancy — read-only is stated three times, and the parameter example duplicates the usage note about matching list_modified_files entries.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description still summarizes the return shape (original, modified, unified diff) for quick scanning. Combined with the safety profile and the list_modified_files prerequisite, an agent has everything needed to invoke this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: file_path is explained as relative to project root with two concrete examples. It doesn't cover failure semantics for an invalid or non-modified path, leaving a small gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns before/after content and unified diff for a specific modified file') and goes further by explaining the computation (backup vs on-disk). The agent can distinguish this from list_modified_files or approve_file_changes without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names when to use (inspecting changes before approve_file_changes / reject_file_changes) and when not to (needs list_modified_files first). Sibling tools are named as alternatives with the condition that selects them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_gradle_statusA
Check the status and result of a Gradle build job.

Args:
    job_id: ID returned by run_gradle_build.
    
Returns:
    JSON with {job_id, status: 'queued'|'running'|'completed'|'failed', result: {...}}.
NameRequiredDescriptionDefault
job_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the return shape and status enum values, but it does not explicitly state that this is a read-only operation, whether statuses are eventually consistent, or any rate-limit/auth considerations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded with the core purpose, and then efficiently documents the argument and return value. Every sentence adds useful information with no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description need not explain the full return object, yet it still helpfully summarizes the status and result fields. For a simple one-parameter status-check tool, this is nearly complete, though polling behavior or terminal-state handling would make it fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single job_id parameter, so the description must compensate. It does so partially by explaining that job_id is the ID returned by run_gradle_build, but it does not add format details or validation constraints beyond that source hint.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: check the status and result of a Gradle build job. It clearly distinguishes this from the sibling run_gradle_build by framing this tool as the status-checking counterpart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly ties the job_id parameter to run_gradle_build, which gives clear usage context for when this tool should be called. It does not provide exclusions or polling guidance, such as how often to call it or when to stop, so it falls just short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_naming_conventionA
Read-only analysis. Detects if project uses camelCase, snake_case, or PascalCase for tokens.

What it does: Analyzes existing tokens to detect whether project uses camelCase, snake_case, or PascalCase.
When to use: Use BEFORE creating new tokens with add_token or replace_pattern to maintain project consistency.
When NOT to use: Do not use to inspect actual token values; use list_tokens instead.
Side effects: Read-only. No files modified.
Parameters:
  - token_type: 'dimension' (default) or 'color'.
Returns:
  JSON string with detected style (e.g. 'camelCase'), confidence score, examples, and recommendations.
NameRequiredDescriptionDefault
token_typeNodimension

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose the safety profile: 'Read-only. No files modified.' It also describes the return shape (detected style, confidence, examples, recommendations). It stops short of auth/rate-limit context, but for a pure analysis tool this is solid disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Labeled sections (What it does / When to use / When NOT to use / Side effects / Parameters / Returns) make it skimmable and front-loaded. There is mild redundancy between the opening 'Read-only analysis. Detects...' line and the 'What it does' line that restates the same detection behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read-only tool it covers everything an agent needs: purpose, routing to/away from siblings, side effects, parameter values, and returns. An output schema exists, so the added return summary is a bonus rather than a requirement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does: it documents token_type as 'dimension' (default) or 'color', supplying the enum-like values the schema omits. It adds real meaning beyond the raw schema, though there is only one parameter to explain.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: detects the token naming convention (camelCase/snake_case/PascalCase) used by the project. It is clearly distinguishable from siblings like list_tokens or add_token, and the scope is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use (BEFORE creating tokens with add_token or replace_pattern) and when not to use (do not use to inspect token values; use list_tokens instead). Both the alternative and the condition that selects it are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sync_statusA
Get the current sync status from the Bridge Server:
agent_busy, queue_count, snapshot_version.
NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden alone. It conveys that this is a status query returning named fields, which implies a non-mutating read, but it never states that explicitly and says nothing about auth requirements, freshness/caching of the status, or whether the call has any 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence, front-loaded with the verb and resource, followed immediately by the three fields it returns. Every clause earns its place with no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description need not explain return values, and its field list is a helpful preview. For a zero-parameter read tool this is nearly complete; the only gap is the absence of any confirmation of read-only behavior or guidance versus the sync-triggering sibling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is no parameter semantics to document and the baseline is 4. The description correctly does not invent or discuss parameters, keeping the focus on the returned state.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Get') and resource ('sync status') and enumerates the returned fields (agent_busy, queue_count, snapshot_version), so the agent knows exactly what the call produces. It does not differentiate itself from the sibling 'trigger_user_sync', which is the main nearby alternative an agent might confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use statement, no prerequisites, and no mention of alternatives such as trigger_user_sync for kicking off a sync versus this tool for observing one. The name implies a read-oriented diagnostic, but the description itself supplies no routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_token_impactA
Get impact analysis for a specific token.

Shows:
- All places where the token is used (file:line)
- The enclosing @Composable for each usage
- Total number of affected UI elements

Use this BEFORE changing a token to understand the impact.

Args:
    token_name: "welcomeCardHeight" or "Primary"
    project_path: optional — explicit path to project root.

Returns:
    JSON with full impact analysis.
NameRequiredDescriptionDefault
token_nameYes
project_pathNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses useful output content (file:line sites, enclosing composable, count of affected elements) which implies a safe read-only operation, but it never states that it is non-mutating, whether it requires the project to be indexed/synced, or any latency/scope limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then grouped into short labeled blocks (Shows / Use this / Args / Returns) with no filler. Every line contributes something an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be re-explained, yet the description still summarizes them helpfully. The main remaining gap is the absence of behavioral/permission context, but for a low-risk read-only analysis tool it is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It gives concrete value examples for token_name ('welcomeCardHeight' or 'Primary') and clarifies that project_path is an optional explicit path to the project root, which meaningfully clarifies both parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get impact analysis for a specific token') and enumerates the three things it reports (usage sites, enclosing @Composable, total affected UI elements). This is clearly distinguishable from sibling token tools such as find_token_by_color or list_tokens.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use this BEFORE changing a token to understand the impact' gives an explicit temporal/decision context for calling it, which is strong for a read analysis tool. However, it names no alternative (e.g., when to use get_token_siblings or list_tokens instead), so it stops short of full when/when-not routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_token_siblingsA
Read-only. Returns semantically related tokens (e.g., Primary → PrimaryDark, PrimaryLight).

What it does: Finds related variants of a token based on naming patterns and semantic links.
When to use: When exploring related tokens or checking which color variants already exist.
When NOT to use: Does NOT include the original token. Returns empty list if no siblings.
Side effects: Read-only. No files modified.
Parameters:
  - token_name: exact token name (e.g., 'Primary') or fully-qualified (e.g., 'AppColors.Primary').
Returns:
  JSON string with list of sibling token names and current values.
NameRequiredDescriptionDefault
token_nameYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden and discloses that the tool is read-only, modifies no files, excludes the original token, and returns an empty list when there are no siblings. It also describes the return payload at a high level, though it omits error behavior such as what happens when token_name is invalid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is clearly structured and front-loaded with the core behavior, then usage guidance, exclusions, side effects, parameters, and returns. It is appropriately sized, though 'Read-only' is repeated in both the opening and the Side effects section.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple one-parameter read-only tool with an output schema, and the description covers purpose, usage, exclusion behavior, side effects, parameter semantics, and return shape. Given the low complexity and existing output schema, an agent has enough information to select and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the undocumented token_name parameter. It does so by explaining that token_name accepts an exact token name like 'Primary' or a fully-qualified name like 'AppColors.Primary', which is the key semantic detail needed to invoke the tool correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it returns semantically related token variants such as PrimaryDark and PrimaryLight, with concrete examples. The purpose is clear, though it does not explicitly name sibling tools such as list_tokens or find_token_by_color to sharpen differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear when-to-use guidance: exploring related tokens or checking existing color variants. It also states a boundary condition that the original token is excluded and an empty list is returned when no siblings exist, but it does not name alternative tools or compare against them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_allowed_gradle_tasksA

List gradle tasks that can be run via run_gradle_build.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full burden. 'List' reliably signals a read-only, non-destructive operation, and the output schema covers return values. Still, it says nothing about whether a gradle environment must exist, whether the result is static or project-dependent, or any auth/rate constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single well-formed sentence with no wasted words, and the resource and its relationship to run_gradle_build are front-loaded. Nothing to trim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters, an output schema handling the return value, and a simple read-only nature, the description is nearly complete for the agent's needs. The only missing nuance is whether the allowed-task list is static/configured or dynamically derived, which the agent might want to know.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to disambiguate, and its only job — explaining what is enumerated — is done.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb ('List') and resource ('gradle tasks') with the added scoping qualifier 'that can be run via run_gradle_build', which ties it directly to the sibling it complements. It is clear and unambiguous, though it does not explicitly contrast itself against the broader 27-tool sibling set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'that can be run via run_gradle_build' strongly implies the tool should be consulted before invoking run_gradle_build, giving usable implied guidance. However, there is no explicit statement of when to use this versus alternatives, nor any prerequisite or exclusion conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_applied_patternsA

List all applied patterns that can be rolled back.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the filtering behavior (only rollbackable patterns are returned), which is genuine context, but says nothing about read-only safety, permissions, or result size; an output schema exists so return values need not be explained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with the resource and the scoping filter front-loaded. Every word earns its place and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only listing tool with an output schema, the description covers what is returned and the key filter. Only minor behavioral context (read-only nature, result size/pagination) is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is no parameter semantics to convey. Baseline 4 applies; the description neither adds nor detracts anything here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List all applied patterns') plus a scoping qualifier ('that can be rolled back'), which separates it from the mutation siblings rollback_pattern and rollback_last. It stops short of explicitly naming those siblings, so it is clear but not maximally differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'that can be rolled back' implies this is the discovery step preceding rollback_pattern, but no when-to-use, when-not-to-use, or named alternative is given. Usage must be inferred from the sibling list rather than the text.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_modified_filesA
Read-only. Lists files modified by recent replace_pattern operations in the current session.

What it does: Queries the session journal to return all files currently in a modified state.
When to use: To see what files have unapproved changes before approving or rejecting.
When NOT to use: Does NOT persist across sessions. For git-based modifications use get_file_diff. Returns files in journal (not git status).
Side effects: Read-only. No files modified.
Parameters: None.
Returns:
  JSON string with list of relative file paths.
NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does substantially: it declares read-only, no side effects, session-bound persistence, and that the source is the session journal rather than git status. It stops short of documenting authorization requirements or failure modes, so it is strong but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The sectioned layout (What it does / When to use / When NOT to use / Side effects / Returns) is well front-loaded and scannable. There is mild redundancy—'Read-only' appears both in the opening line and again under Side effects—but the text is otherwise tight and every section earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be spelled out, yet the description still notes a JSON list of relative file paths. Combined with the session-boundary and source-of-truth caveats, nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, which per the rubric sets a baseline of 4. The description confirms 'Parameters: None,' accurately matching the empty schema, so there is no gap to compensate for.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with scope: 'Lists files modified by recent replace_pattern operations in the current session.' It also distinguishes itself from the related get_file_diff sibling by clarifying it returns journal state, not git status, so an agent can pick between them without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly provides 'When to use' (view unapproved changes before approving/rejecting) and 'When NOT to use' (does not persist across sessions; use get_file_diff for git-based modifications). This is the full when/when-not/alternative pattern, leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_orphansA
List all orphan tokens (registered but never used).

Orphan tokens are a sign of design system clutter.
Use this to identify tokens that can be safely removed
or that need to be used in the codebase.

Args:
    project_path: optional — explicit path to project root.

Returns:
    JSON with list of orphan tokens and their locations.
NameRequiredDescriptionDefault
project_pathNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden. It explains what an orphan is (registered but never used) and that results echo token locations, which is useful semantic context, but it never states that this is a side-effect-free read operation, nor does it mention permission, project-load, or cost/rate considerations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core definition, then rationale, use case, args, and returns. Every section is short and earns its place; the 'design system clutter' line is slightly editorial but still supports the usage guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with an output schema already covering return structure, the description adds the needed conceptual and parameter context. Nothing critical is missing, though a note that it is a safe read operation would close the remaining gap left by absent annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does by documenting the single parameter ('project_path: optional — explicit path to project root'), clarifying its role and optionality beyond the bare schema title.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (list orphan tokens) and defines the key term inline ('registered but never used'), which immediately distinguishes it from the generic list_tokens sibling without the agent opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear motivating context ('identify tokens that can be safely removed or that need to be used in the codebase'), telling the agent when this tool is useful. It does not, however, name alternatives such as list_tokens or state any exclusion conditions, so it stops short of the explicit when/when-not routing a 5 requires.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_tokensA
List all design tokens in the project.

Returns a comprehensive report:
- Registered tokens (dimensions, colors)
- Hardcoded values that could become tokens
- Duplicate tokens (same value, different names)
- Orphan tokens (registered but unused)

Use this to understand the project's design system
before making edits.

Args:
    project_path: optional — explicit path to project root.
NameRequiredDescriptionDefault
project_pathNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does disclose the shape of the returned report (four token categories), which is useful, but says nothing about read-only safety, side effects, permissions, or performance on large projects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and a scannable bullet list of return categories, then the usage hint. The trailing 'Args:' block largely restates the schema, a minor redundancy, but the prose is otherwise tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-optional-param read tool, the description covers purpose, usage timing, and report contents. An output schema exists, so explaining return values is not strictly required, and the remaining gaps (default path behavior, read-only guarantees) are modest.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does document the single parameter as 'optional — explicit path to project root.' However, it never states what happens when the path is omitted (e.g., auto-detection of project root), leaving the default behavior ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('List all design tokens in the project') and enumerates what the report contains (registered, hardcoded, duplicate, orphan tokens). It does not differentiate itself from overlapping siblings such as list_orphans or get_all_token_groups, which the report categories partially duplicate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use this to understand the project's design system before making edits' gives a clear situational context for calling the tool. There are no exclusions or named alternatives, so it stops short of the 5-level 'when-not/alternatives' guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reject_all_filesA
Destructive: Reverts ALL pending changes using byte-level backup (.bridge.bak).

What it does: Rolls back byte-for-byte all files modified in the current journal session.
When to use: To completely discard all recent changes and return every file to its exact prior state.
When NOT to use: Use reject_file_changes for a single file. Use reject_all_files_force if some rollbacks may fail.
Side effects: Destructive rollback. Overwrites all modified files with their .bridge.bak backups and clears journal.
Parameters: None.
Returns:
  JSON string with list of reverted files and status.
NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so: it leads with 'Destructive:', explains the byte-for-byte rollback via .bridge.bak backups, states that all modified files are overwritten, that the journal is cleared, and that a status list is returned. This is exactly the behavioral context an agent needs for an irreversible write.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Labeled sections are front-loaded with the destructive warning and every line is scannable. The 'Returns' block is mild duplication given an output schema exists, but it costs little.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter destructive tool with an output schema and no annotations, the description covers trigger, exclusion, side effects, and return shape. Nothing an agent needs to invoke it safely is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so the baseline is 4; the description's 'Parameters: None.' confirms the no-argument contract rather than adding meaning. Nothing more is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (rolls back all files modified in the current journal session) and explicitly differentiates itself from the two closest siblings, reject_file_changes and reject_all_files_force. An agent can select it without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'When to use' and 'When NOT to use' sections name the alternatives and the exact condition that routes to each ('reject_file_changes for a single file', 'reject_all_files_force if some rollbacks may fail'). Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reject_all_files_forceA
Destructive + Forceful. Clears the entire journal EVEN IF some rollbacks fail.

What it does: Forcefully attempts rollback and clears the journal unconditionally.
When to use: Use only when reject_all_files fails due to missing backups or file corruption.
When NOT to use: May leave files in inconsistent state. For safe rollback use reject_all_files.
Side effects: Destructive + Forceful: Clears all journal tracking regardless of whether every file reverted cleanly.
Parameters: None.
Returns:
  JSON string with forced rollback results.
NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that journal tracking is cleared regardless of clean reversion and that files may be left in an inconsistent state — strong destructive-behavior disclosure. It stops short of stating permission/auth requirements or reversibility options, leaving a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Labeled sections (What it does, When to use, When NOT to use, Side effects, Parameters, Returns) are well organized and front-loaded with the 'Destructive + Forceful' warning. The journal-clearing behavior is stated twice (opening line and side effects), a small redundancy, but nothing is wasted overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters, a present output schema, and no annotations, the description covers purpose, usage conditions, exclusions, side effects, and parameter count — everything an agent needs to invoke it correctly. Return values needn't be explained since an output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, so the baseline is 4. 'Parameters: None' correctly and explicitly confirms this, adding the only clarification needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('forcefully attempts rollback and clears the journal unconditionally') and distinguishes itself from the sibling reject_all_files by scope and failure tolerance. An agent can tell it apart without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'When to use' (only when reject_all_files fails due to missing backups or corruption) and 'When NOT to use' (may leave files inconsistent; use reject_all_files for safe rollback). Names the alternative and the selecting condition directly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reject_file_changesA
Destructive: Reverts pending changes for a SINGLE file using .bridge.bak backup.

What it does: Rolls back byte-for-byte to the state before the recent surgical edit or replace_pattern.
When to use: When modifications to a specific file are incorrect and need to be discarded.
When NOT to use: File must be currently modified. Use reject_all_files for all files.
Side effects: Destructive rollback. Overwrites file with original backup and removes entry from journal.
Parameters:
  - file_path: relative path to project root (e.g., 'QuickActionsWidget.kt' or 'ui/theme/AppStrings.kt').
Returns:
  JSON string confirming rollback of the file.
NameRequiredDescriptionDefault
forceNo
file_pathYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and mostly delivers: it flags destructiveness, states that the file is overwritten from a .bridge.bak backup, and that the journal entry is removed. It does not cover failure modes, e.g. what happens when no backup exists or the file was never modified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the 'Destructive:' warning before anything else and uses labeled sections that scan quickly. Slight redundancy between the opening line and the 'What it does' sentence, and the Returns line duplicates the output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Strong coverage for a destructive mutation tool: precondition, side effects, scope, and the backup mechanism are all stated, and an output schema exists so the return format needs no elaboration. The undocumented 'force' flag is the one substantive omission for an agent deciding how to call it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It documents file_path well (relative to project root, with two concrete examples including a nested path), but the optional 'force' parameter appears in neither the schema nor the description, leaving its override semantics completely unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and scope: reverts pending changes for a SINGLE file using the .bridge.bak backup. The all-caps 'SINGLE' plus the sibling callout to reject_all_files makes the boundary unmistakable, and 'byte-for-byte' pins down the granularity of the rollback.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly separates when to use (modifications to a specific file are incorrect) from when not to use (file must currently be modified), and names the alternative reject_all_files for the multi-file case. The only gap is the unmentioned reject_all_files_force sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

replace_patternA
DESTRUCTIVE BATCH OPERATION: Replaces ALL occurrences of a pattern across the project.

What it does: Creates new token + replaces usages. Can be rolled back via rollback_pattern(pattern_id).
When to use: When replacing a recurring conditional or hardcoded pattern across all files.
When NOT to use: USE dry_run=True FIRST to preview affected files. pattern_id must come from detect_conditional_variants.
Side effects: DESTRUCTIVE: Modifies multiple .kt files simultaneously. Records changes in journal.
Parameters:
  - pattern_id: Unique pattern identifier from detect_conditional_variants.
  - dry_run: If True (recommended first), previews changes without writing to disk.
Returns:
  JSON string with replacements made, modified files, and created token name.
NameRequiredDescriptionDefault
dry_runNo
pattern_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so: it labels the operation DESTRUCTIVE, notes it modifies multiple .kt files simultaneously, records changes in a journal, and specifies rollback via rollback_pattern(pattern_id). Safety, reversibility, and write scope are all disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the DESTRUCTIVE warning and organized under clear headers, which aids scanning. It is slightly verbose, restating destructiveness in the header and again under side effects, but every section remains relevant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values needn't be documented, yet the description still summarizes the JSON result. Combined with the usage, safety, rollback, and parameter detail, nothing an agent needs to call this destructive tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% (titles only), so the description must compensate and does: pattern_id is defined as a unique identifier sourced from detect_conditional_variants, and dry_run is explained as previewing changes without writing to disk. Both parameters gain meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (replaces) with resource (pattern occurrences across the project) and scope (ALL, batch). It explicitly routes the agent by naming detect_conditional_variants as the origin of pattern_id and rollback_pattern as the inverse, so it's distinguishable from all siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit 'When to use' and 'When NOT to use' sections, requiring a dry_run preview first and mandating the pattern_id come from detect_conditional_variants. This is exactly the when/when-not/alternative guidance the rubric reserves top marks for.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rollback_lastB

Reverts the LAST surgical edit made in the current session.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full disclosure burden. It does usefully bound the behavior (only the most recent edit, only the current session, only surgical edits), but says nothing about whether the rollback is itself reversible, what happens when there is no prior edit, or any permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. The most decisive constraint ('LAST') is placed early, and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation. However, with no annotations on a state-mutating revert operation, the missing safety and failure-mode context leaves the definition only marginally complete for an agent deciding whether to call it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to annotate and the baseline of 4 applies. No parameter-level clarification is needed or missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb (reverts) plus a precisely scoped resource (the LAST surgical edit in the current session). An agent can distinguish it from the sibling rollback_pattern, though 'surgical edit' is left undefined, so the boundary of what qualifies is not fully nailed down.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The scope qualifiers ('LAST', 'current session') imply context, but the description never states when to reach for this tool versus the sibling rollback_pattern, nor any preconditions or exclusions. An agent must infer the choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rollback_patternA
Rolls back ALL changes made by a specific replace_pattern call.

What it does: Requires pattern_id from the original replace_pattern response. All files are reverted byte-for-byte.
When to use: When a replace_pattern operation caused regressions and needs complete reversal.
When NOT to use: Cannot undo if files were modified externally. Use rollback_last for single-edit undo.
Side effects: Destructive rollback. Modifies all files touched by the pattern back to their prior state.
Parameters:
  - pattern_id: The exact pattern_id from the original replace_pattern response.
Returns:
  JSON string with list of reverted files and status.
NameRequiredDescriptionDefault
pattern_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, and it does well: it flags destructive rollback, byte-for-byte reversion, and the limitation that externally modified files cannot be undone. It omits details like permissions or whether the rollback itself is reversible, keeping it just short of 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action, then cleanly sectioned into use/not-use/side-effects. The 'Returns' line is somewhat redundant since an output schema exists, but the overall structure is tight and scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter destructive tool with no annotations, it covers purpose, routing, side effects, prerequisite parameter source, and error limits. With an output schema present, its return summary is a bonus rather than a gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains pattern_id as the exact pattern_id from the original replace_pattern response, which is more than the bare 'Pattern Id' title conveys, though no format example is given.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (rolls back) and scope (ALL changes made by a specific replace_pattern call). Clearly differentiates itself from the sibling rollback_last, which it names explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'When to use' (replace_pattern caused regressions needing complete reversal) and 'When NOT to use' (files modified externally), plus a direct alternative (rollback_last for single-edit undo). All routing 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_gradle_buildA
Run a Gradle task with async tracking support.

This lets the agent verify that code changes compile successfully
before continuing with more changes, without locking the MCP connection.

Args:
    task: gradle task to run (whitelist enforced: assembleDebug, assembleRelease, test, lint, clean, etc.).
    timeout_seconds: max execution time (default 5 min).
    async_mode: if true (default), returns job_id immediately so agent can poll with get_gradle_status.

Returns:
    JSON with job_id and status, or execution result if sync.
NameRequiredDescriptionDefault
taskNoassembleDebug
async_modeNo
timeout_secondsNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so the description carries the burden and does well: it discloses async-by-default behavior, the job_id return, the whitelist enforcement constraint, the 5-minute default timeout, and that it won't block the MCP connection. Does not mention error/failure reporting in detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose sentence, then structured Args/Returns. Efficient overall; the Returns section slightly overlaps the existing output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists so return values are covered, and the description still summarizes them. For a 3-param tool with no annotations, the behavior disclosure is solid; only minor gaps around failure handling and discovering allowed tasks.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description documents all three parameters including defaults: the task whitelist examples, the 5-minute default timeout, and async_mode semantics. Adds real meaning beyond the bare schema titles.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Run a Gradle task') and adds the async tracking angle, distinguishing it from get_gradle_status which is mentioned as the polling companion. Clear without needing the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the intent clearly ('verify that code changes compile successfully before continuing') and points to get_gradle_status for polling. Missing explicit when-not guidance, e.g. that list_allowed_gradle_tasks exists to enumerate valid task names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_textA
DESTRUCTIVE: Modifies .kt files. Surgically edit text content with automatic BridgeTextRegistry wrapping.

What it does: Modifies .kt files. Auto-migrates hardcoded text to BridgeTextRegistry for live preview.
When to use: When editing UI text strings, whether defined in AppStrings or hardcoded in Composable Text("...") elements.
When NOT to use: Do not use for colors or dimensions (use set_token or add_token).
Side effects: DESTRUCTIVE: Modifies source code on disk. Requires approve_file_changes before changes take effect in git. Can be reverted via reject_file_changes.
Parameters:
  - token_name: reference key (e.g., 'AppStrings.Dashboard.title') OR exact old text content to replace.
  - new_value: The new text string to set.
  - file_path: relative path to source file (e.g., 'QuickActionsWidget.kt' or 'ui/theme/AppStrings.kt').
  - line: optional line number for disambiguation if text appears multiple times.
Returns:
  JSON string with success status, old_text, new_text, and modified file location.
NameRequiredDescriptionDefault
lineNo
file_pathNo
new_valueYes
token_nameYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and delivers: it flags DESTRUCTIVE on-disk source modification, discloses auto-migration to BridgeTextRegistry, states the approve_file_changes gating requirement, and documents reversibility via reject_file_changes. This is exactly the behavioral context an agent needs before a mutating call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Strongly front-loaded with labeled sections (destructive warning, what/when/when-not, side effects, params, returns). Minor cost: 'Modifies .kt files' is restated three times, creating slight redundancy that could be trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, usage, safety, approval workflow, per-parameter meaning, and even return contents (success status, old_text, new_text, file location) despite an output schema existing. Nothing an agent needs to invoke this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate and does: token_name is explained as EITHER a reference key (with an example format) OR exact old text content, new_value and file_path get examples, and line is explained as optional disambiguation for repeated text. This adds meaning well beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Surgically edit text content', 'Modifies .kt files') and scopes it to UI text strings including hardcoded Text("...") elements. It clearly differentiates itself from siblings set_token and add_token, so an agent can select it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit and complete: 'When to use' names editing UI text strings, and 'When NOT to use' routes colors/dimensions to set_token or add_token. Both the triggering condition and the excluded alternatives are spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_tokenA
DESTRUCTIVE: Modifies .kt files. Surgically edit a design token value in source code.

What it does: Modifies .kt files containing the token definition. Notifies phone via WebSocket (live preview).
When to use: When adjusting a design token (color or dimension) and immediately observing visual feedback.
When NOT to use: Do not use for text strings (use set_text). Do not use for converting hardcoded values to tokens (use add_token).
Side effects: DESTRUCTIVE: Modifies source code on disk. Requires approve_file_changes to commit changes or reject_file_changes to revert.
Parameters:
  - token_name: exact token name OR 'AppColors.TokenName' (e.g., 'Primary', 'cardCorner').
  - value: '#RRGGBB' for colors or numeric for dimensions (e.g., '#FF1122', '24.dp').
Returns:
  JSON string with update status, file path, and previous/new values.
NameRequiredDescriptionDefault
valueYes
token_nameYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description fully carries the behavioral burden: it flags DESTRUCTIVE, discloses on-disk source mutation and the WebSocket phone notification, and specifies the approve_file_changes/reject_file_changes commit-revert workflow. This is exactly the safety context an agent needs before a mutating call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Sections are labeled and the destructive warning is front-loaded, so it is easy to scan. The 'Returns' block largely restates the output schema, which is mild redundancy that slightly dilutes conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, two-parameter mutation tool with no annotations, the description covers purpose, routing, side effects, workflow prerequisites, parameter formats, and even a return summary. An agent has everything required to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate and does: it explains token_name accepts either a bare name or a 'AppColors.TokenName' form, and that value is '#RRGGBB' for colors or numeric/'24.dp' for dimensions, with concrete examples for both.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Surgically edit a design token value in source code,' and immediately constrains the target to .kt files containing the token definition. It also distinguishes itself from closely-named siblings (set_text, add_token).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'When to use' (adjusting a color/dimension token with live feedback) and 'When NOT to use' sections that name the alternative tools for the excluded cases (set_text for strings, add_token for hardcoded-to-token conversion). Routing is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

suggest_token_splitA
Read-only analysis. Suggests splitting tokens used in multiple contexts.

What it does: Detects if a token is used in different contexts (e.g. cards and buttons) and proposes contextual splits.
When to use: Use BEFORE replace_pattern.
When NOT to use: For token impact analysis use get_token_impact. For sibling tokens use get_token_siblings.
Side effects: Read-only. No files modified.
Parameters:
  - token_name: optional filter to analyze a specific token only.
  - project_path: optional override for project root path.
Returns:
  JSON string with split suggestions, proposed token names, and affected call sites.
NameRequiredDescriptionDefault
token_nameNo
project_pathNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden and does disclose the crucial behavioral trait: 'Read-only analysis' and 'Side effects: Read-only. No files modified.' This tells the agent it is a safe, non-mutating operation. It does not address permissions, error behavior, or performance, so it falls short of 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the read-only qualifier, then organized under labeled sections (What it does / When to use / When NOT to use / Side effects / Parameters / Returns). Every line earns its place and nothing is redundant, making it easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Even though an output schema exists, the description briefly signals the return shape ('split suggestions, proposed token names, and affected call sites'). Combined with the routing guidance and side-effect disclosure, an agent has everything required to select and invoke this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: token_name is described as an 'optional filter to analyze a specific token only' and project_path as an 'optional override for project root path'. Both parameters get meaning and their optional nature is clear, though no format or default guidance beyond that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('suggests splitting tokens used in multiple contexts') and adds a concrete definition of the detection logic with an example ('cards and buttons'). It explicitly names sibling tools (get_token_impact, get_token_siblings) so an agent can separate this from adjacent analysis tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit sequencing ('Use BEFORE replace_pattern'), plus named alternatives for other intents ('For token impact analysis use get_token_impact. For sibling tokens use get_token_siblings.'). Both when-to-use and when-not-to-use are covered with concrete routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

trigger_user_syncA
Trigger user_sync on the Bridge Server.

Applies all queued edits (dimension + color) to the files.
Only works when the AI agent is not busy.

Returns:
    JSON with {success, applied, skipped, errors}.
NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose the core effect (all queued edits applied to files) plus a gating condition (agent must not be busy). It omits failure behavior, whether the operation is blocking, and reversibility, even though a rollback_last sibling exists that implies undo semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action, then the effect, then the precondition. The trailing 'Returns:' block is somewhat redundant because an output schema exists, but it is short and does not bloat the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the return explanation is unnecessary but harmless; the description covers effect and precondition, and there are no parameters to document. It stops short of explaining what 'skipped' or 'errors' mean operationally or how to recover, which is the only real gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to compensate for; baseline is 4. The empty schema is fully consistent with the described no-argument trigger.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Trigger user_sync on the Bridge Server') and adds what the action actually does: applying queued dimension/color edits to files. It does not, however, distinguish itself from nearby siblings like get_sync_status or approve_all_files, which also deal with pending sync state.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The line 'Only works when the AI agent is not busy' gives a real precondition for invocation, which is more than most. But there is no guidance on when to prefer this over get_sync_status (checking state) or approve/reject tools (managing the queue), leaving the routing to inference.

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.

  1. 2 tool updatesv1.1.5
    • Addedget_gradle_status
    • Changedrun_gradle_build1 field changed
      • addedInput schema / properties / async_mode
        Added value: +{
        +  "default": true,
        +  "title": "Async Mode",
        +  "type": "boolean"
        +}
  2. 27 tool updates
    • Addedadd_token
    • Addedapprove_all_files
    • Addedapprove_file_changes
    • Addeddetect_conditional_variants
    • Addedfind_token_by_color
    • Addedget_all_token_groups
    • Addedget_file_diff
    • Addedget_naming_convention
    • Addedget_sync_status
    • Addedget_token_impact
    • Addedget_token_siblings
    • Addedlist_allowed_gradle_tasks
    • Addedlist_applied_patterns
    • Addedlist_modified_files
    • Addedlist_orphans
    • Addedlist_tokens
    • Addedreject_all_files
    • Addedreject_all_files_force
    • Addedreject_file_changes
    • Addedreplace_pattern
    • Addedrollback_last
    • Addedrollback_pattern
    • Addedrun_gradle_build
    • Addedset_text
    • Addedset_token
    • Addedsuggest_token_split
    • Addedtrigger_user_sync
  3. 27 tool updates
    • Removedadd_token
    • Removedapprove_all_files
    • Removedapprove_file_changes
    • Removeddetect_conditional_variants
    • Removedfind_token_by_color
    • Removedget_all_token_groups
    • Removedget_file_diff
    • Removedget_naming_convention
    • Removedget_sync_status
    • Removedget_token_impact
    • Removedget_token_siblings
    • Removedlist_allowed_gradle_tasks
    • Removedlist_applied_patterns
    • Removedlist_modified_files
    • Removedlist_orphans
    • Removedlist_tokens
    • Removedreject_all_files
    • Removedreject_all_files_force
    • Removedreject_file_changes
    • Removedreplace_pattern
    • Removedrollback_last
    • Removedrollback_pattern
    • Removedrun_gradle_build
    • Removedset_text
    • Removedset_token
    • Removedsuggest_token_split
    • Removedtrigger_user_sync
  4. 1 tool updatev1.1.0
    • Addedset_text
  5. 26 tool updatesv0.1.0
    • First observedadd_token
    • First observedapprove_all_files
    • First observedapprove_file_changes
    • First observeddetect_conditional_variants
    • First observedfind_token_by_color
    • First observedget_all_token_groups
    • First observedget_file_diff
    • First observedget_naming_convention
    • First observedget_sync_status
    • First observedget_token_impact
    • First observedget_token_siblings
    • First observedlist_allowed_gradle_tasks
    • First observedlist_applied_patterns
    • First observedlist_modified_files
    • First observedlist_orphans
    • First observedlist_tokens
    • First observedreject_all_files
    • First observedreject_all_files_force
    • First observedreject_file_changes
    • First observedreplace_pattern
    • First observedrollback_last
    • First observedrollback_pattern
    • First observedrun_gradle_build
    • First observedset_token
    • First observedsuggest_token_split
    • First observedtrigger_user_sync

TDQS

A3.8/5.0

Scored across 28 tools

Disambiguation3/5

Most tools have distinct purposes, but several families overlap: approval/rollback tools (approve_file_changes, approve_all_files, reject_file_changes, reject_all_files, reject_all_files_force, rollback_last, rollback_pattern) and token-analysis tools (list_tokens, list_orphans, get_all_token_groups, get_token_siblings, get_token_impact, suggest_token_split) require careful reading to choose correctly. The descriptions provide explicit when-to-use guidance, so the boundaries are recoverable but not immediately obvious.

Naming Consistency5/5

Tool names consistently follow a snake_case verb_noun convention, such as list_tokens, set_token, add_token, get_file_diff, approve_all_files, and rollback_pattern. Variants are predictable and no mixed casing or unrelated naming styles appear.

Tool Count3/5

With 28 tools, the surface is heavy and several tools are variants around approval/rollback or token analysis that could potentially be consolidated. The server covers broad capabilities (token editing, pattern replacement, journal approval, Gradle builds, sync), so the count is defensible but still borderline excessive.

Completeness4/5

Core workflows are well covered: token listing, creation, update, impact analysis, pattern detection/replacement/rollback, file diff/approval/rejection, Gradle execution, and sync status. Minor gaps exist, such as explicit token deletion/renaming and a dedicated way to list or search text strings, but agents can likely work around these.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Local MCP server providing project cognition capabilities for AI coding agents, including context packs, impact analysis, and git diff review through stdio communication.
    10
    3
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Local-first code intelligence and safety layer for AI coding agents. MCP server exposes dependency graph, impact analysis, and AST-compressed repo context, backed by typed local memory, patch-scope safety gates, and git-independent transaction rollback.
    1
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    MCP server that provides AI coding agents real Android development tools—Gradle, adb, logcat, lint, crash triage—through a local, permissioned interface. Enables agents to inspect projects, run safe Gradle tasks, capture logs/screenshots, and triage crashes.
    1
    -