Skip to main content
Glama
mmntm

Weblate MCP Server

by mmntm

Weblate MCP Server

A Model Context Protocol (MCP) server that provides seamless integration with Weblate translation management platform. This server enables AI assistants to interact directly with your Weblate instance for comprehensive translation management.

🌟 Features

  • πŸ”§ Complete Weblate API Access: Full integration with Weblate's REST API

  • πŸ€– AI-Powered Workflow: Natural language interaction with your translation projects

  • πŸ“Š Project Management: Create, list, and manage translation projects

  • πŸ” Component Operations: Handle translation components and configurations

  • ✏️ Translation Management: Update, search, and manage translations

  • 🌐 Language Support: Work with all supported languages in your Weblate instance

  • πŸš€ Multiple Transports: HTTP/SSE, Streamable HTTP, and STDIO support

  • πŸ›‘οΈ Type Safety: Full TypeScript implementation with comprehensive error handling

  • ⚑ LLM-Optimized: Tools designed to guide AI models toward efficient usage patterns

Related MCP server: tolgee-mcp

🎯 What is This?

This MCP server acts as a bridge between AI assistants (like Claude Desktop) and your Weblate translation management platform. Instead of manually navigating the Weblate web interface, you can use natural language to:

  • "List all projects in my Weblate instance"

  • "Show me the French translations for the frontend component"

  • "Update the welcome message translation"

  • "Create a new translation project"

πŸš€ Quick Start

The easiest way to use this MCP server is with npx - no installation required!

For Claude Desktop or other MCP clients:

{
  "mcpServers": {
    "weblate": {
      "command": "npx",
      "args": ["-y", "@mmntm/weblate-mcp"],
      "env": {
        "WEBLATE_API_URL": "https://your-weblate-instance.com/api",
        "WEBLATE_API_TOKEN": "your-weblate-api-token"
      }
    }
  }
}

Manual testing:

# Test the server directly
npx @mmntm/weblate-mcp

Option 2: Development Setup

Prerequisites

  • Node.js 18+

  • pnpm package manager

  • Weblate instance with API access

Installation

# Clone and install
git clone <this-repo>
cd weblate-mcp
pnpm install

# Configure environment
cp .env.example .env
# Edit .env with your Weblate API URL and token

# Build and start
pnpm build
pnpm start

Server runs on http://localhost:3001 by default.

Environment Configuration

WEBLATE_API_URL=https://your-weblate-instance.com
WEBLATE_API_TOKEN=your-api-token-here
PORT=3001
NODE_ENV=production
LOG_LEVEL=info

πŸ”— MCP Client Configuration

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "weblate": {
      "command": "npx",
      "args": ["-y", "@mmntm/weblate-mcp"],
      "env": {
        "WEBLATE_API_URL": "https://your-weblate-instance.com/api",
        "WEBLATE_API_TOKEN": "your-weblate-api-token"
      }
    }
  }
}

Claude Desktop (Development/Local)

For development or local builds:

{
  "mcpServers": {
    "weblate": {
      "command": "node",
      "args": ["/path/to/weblate-mcp/dist/main.js"],
      "env": {
        "WEBLATE_API_URL": "https://your-weblate-instance.com/api",
        "WEBLATE_API_TOKEN": "your-api-token"
      }
    }
  }
}

HTTP Clients (Cursor, VS Code, Web Apps)

{
  "transport": "http",
  "url": "http://localhost:3001/mcp"
}

πŸ› οΈ Available Tools

πŸ“Š Project Management

Tool

Description

listProjects

List all available Weblate projects with URLs and metadata

πŸ”§ Component Management

Tool

Description

listComponents

List components in a specific project with source language details

✏️ Translation Management

Tool

Description

searchUnitsWithFilters ⭐

Efficient search using Weblate's native filtering syntax

searchStringInProject

Search for translations containing specific text in a project

getTranslationForKey

Get translation value for a specific key

writeTranslation

Update or write translation values with approval support

bulkWriteTranslations ⚑

Batch update multiple translations efficiently with error handling

findTranslationsForKey

Find all translations for a specific key across languages

The searchUnitsWithFilters tool uses Weblate's native filtering syntax, making it the most efficient way to find translations:

  • ❌ Inefficient: Getting all keys then checking each one individually (can make thousands of API calls)

  • βœ… Efficient: Single filtered search using Weblate's query syntax

Example efficient queries:

  • state:=0 - Find untranslated strings

  • state:=10 - Find strings that need editing

  • source:"login" - Find strings containing "login"

  • component:common AND state:=0 - Complex filters

🌐 Language Management

Tool

Description

listLanguages

List languages available in a specific project

πŸ“Š Translation Statistics Dashboard

Tool

Description

getProjectStatistics

Comprehensive project statistics with completion rates and string counts

getComponentStatistics

Detailed statistics for a specific component

getProjectDashboard

Complete dashboard overview with all component statistics

getTranslationStatistics

Statistics for specific translation (project/component/language)

getComponentLanguageProgress

Translation progress for all languages in a component with progress bars

getLanguageStatistics

Statistics for a language across all projects

getUserStatistics

User contribution statistics and activity metrics

πŸ“ˆ Change Tracking & History

Tool

Description

listRecentChanges

Recent changes across all projects with user and timestamp filtering

getProjectChanges

Recent changes for a specific project

getComponentChanges

Recent changes for a specific component

getChangesByUser

Recent changes by a specific user

πŸ’‘ Usage Examples

Project Operations

// List all projects
await list_projects();

// Get specific project details
await get_project({ slug: "my-project" });

// Create a new project
await create_project({
  name: "New Project",
  slug: "new-project",
  web: "https://example.com"
});

Translation Operations

// List translations for a component
await list_translations({
  project_slug: "my-project",
  component_slug: "frontend"
});

// Get specific translation
await get_translation({
  project_slug: "my-project",
  component_slug: "frontend",
  language_code: "fr"
});

// Update translations
await update_translation({
  project_slug: "my-project",
  component_slug: "frontend",
  language_code: "fr",
  translations: {
    "welcome": "Bienvenue",
    "goodbye": "Au revoir"
  }
});

πŸ“š Documentation

Document

Description

πŸ“– Documentation Hub

Complete documentation overview and quick start

πŸš€ Installation & Setup

Installation, configuration, and Claude Desktop setup

πŸ“‹ API Reference

Complete API documentation with examples

πŸ› οΈ Development Guide

Contributing, development setup, and testing

πŸ—οΈ Architecture

Codebase structure, patterns, and design decisions

πŸ“¦ Release Process

Release management and publishing workflow

πŸ”„ Changesets Guide

Version management with changesets

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   MCP Client    │───▢│  Weblate MCP     │───▢│  Weblate API    β”‚
β”‚  (IDE/Editor)   β”‚    β”‚     Server       β”‚    β”‚   (REST API)    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              β”‚
                              β–Ό
                       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                       β”‚   MCP Tools      β”‚
                       β”‚ β€’ Projects       β”‚
                       β”‚ β€’ Components     β”‚
                       β”‚ β€’ Translations   β”‚
                       β”‚ β€’ Languages      β”‚
                       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Technology Stack:

  • NestJS: Modern Node.js framework with dependency injection

  • TypeScript: Full type safety and IntelliSense support

  • Weblate REST API: Comprehensive API wrapper with interfaces

  • MCP Protocol: Standard Model Context Protocol implementation

  • Axios: HTTP client for API communication

πŸ§ͺ Development

Development Setup

# Start development server with hot reload
pnpm run dev

# Run tests
pnpm test

# Run end-to-end tests
pnpm run test:e2e

# Generate test coverage
pnpm run test:cov

# Build for production
pnpm build

Adding New Tools

  1. Create tool file in src/tools/

  2. Implement MCP tool interface

  3. Add to service providers

  4. Write tests

  5. Update documentation

See Development Guide for detailed instructions.

🎯 Use Cases

Translation Management

  • Project oversight: Monitor translation progress across projects

  • Content updates: Update translations programmatically

  • Quality assurance: Review and approve translations

  • Team coordination: Manage translation workflows

Development Integration

  • CI/CD pipelines: Automate translation updates in deployment

  • Content management: Sync translations with content systems

  • Localization testing: Validate translations in different contexts

  • Documentation: Generate translation reports and statistics

AI-Assisted Workflows

  • Natural language queries: Ask about translation status in plain English

  • Contextual operations: AI understands your translation needs

  • Batch operations: Perform bulk updates with AI assistance

  • Smart suggestions: Get AI-powered translation recommendations

πŸ”’ Security & Production

  • API Token Security: Store tokens securely, use environment variables

  • Rate Limiting: Built-in request throttling and retry logic

  • Error Handling: Comprehensive error responses with debugging info

  • Input Validation: All inputs validated with Zod schemas

  • HTTPS Support: Secure communication with Weblate instances

🀝 Contributing

We welcome contributions! Please see our Contributing Guidelines:

  1. Fork the repository

  2. Create a feature branch from main

  3. Implement changes with tests

  4. Update documentation

  5. Submit a pull request

Code Style

  • Use TypeScript for type safety

  • Follow NestJS conventions

  • Add comprehensive tests

  • Update documentation

πŸ“„ License

MIT License - see LICENSE file for details.

πŸ™ Acknowledgments

  • Weblate: For providing an excellent translation management platform

  • Model Context Protocol: For the standardized protocol specification

  • NestJS: For the robust application framework

  • Contributors: Everyone who helps improve this project


Built with ❀️ for the translation community

Need help? Check our documentation or create an issue!

Available Tools

20 tools
bulkWriteTranslationsB

Update multiple translations in batch for efficient bulk operations

ParametersJSON Schema
NameRequiredDescriptionDefault
projectSlugYesThe slug of the project
componentSlugYesThe slug of the component
languageCodeYesThe language code (e.g., en, es, fr)
translationsYesArray of translations to update

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Update' implies a write/mutation operation, it doesn't specify permission requirements, whether changes are reversible, error handling for partial failures, or rate limits. The efficiency claim is vague without concrete performance characteristics.

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 a single, efficient sentence that front-loads the core purpose ('Update multiple translations') followed by the operational context ('in batch for efficient bulk operations'). Every word serves a purpose with zero redundancy.

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?

For a mutation tool with 4 parameters, no annotations, and no output schema, the description is minimally adequate. It identifies the tool's purpose and batch nature but lacks critical behavioral details about permissions, error handling, and response format that would be needed for confident agent usage.

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 100%, providing complete parameter documentation. The description adds no specific parameter information beyond what's in the schema, so it meets the baseline score of 3. It doesn't explain relationships between parameters (e.g., how projectSlug, componentSlug, and languageCode work together).

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 clearly states the action ('Update multiple translations') and resource ('translations'), with the qualifier 'in batch for efficient bulk operations' distinguishing it from the sibling 'writeTranslation' tool. However, it doesn't explicitly name the alternative single-write tool, keeping it from a perfect score.

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 description implies usage context ('for efficient bulk operations') suggesting this should be used when updating many translations at once rather than individually. However, it doesn't explicitly state when NOT to use it or directly reference the 'writeTranslation' sibling as the alternative for single updates.

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

findTranslationsForKeyC

Find all translations for a specific key across all components and languages in a project

ParametersJSON Schema
NameRequiredDescriptionDefault
projectSlugYesThe slug of the project
keyYesThe exact translation key to find

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states what the tool does but doesn't describe important behavioral traits: whether this is a read-only operation, what format the results return, if there are pagination limits, authentication requirements, or rate limits. For a search tool with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves.

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 a single, efficient sentence that communicates the core purpose without unnecessary words. It's appropriately sized for a straightforward search tool and front-loads the essential information. Every word earns its place in conveying the tool's function.

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

Completeness2/5

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

For a search tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what format the 'find' results return (list of translations? structured data?), whether there are limitations (max results, pagination), or error conditions. The description alone leaves the agent guessing about important operational aspects despite the tool's apparent simplicity.

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 100%, so the schema already documents both parameters completely. The description adds no additional parameter semantics beyond what's in the schema - it doesn't explain what constitutes a 'key' format, provide examples, or clarify 'projectSlug' conventions. With high schema coverage, baseline 3 is appropriate as the description doesn't enhance parameter understanding.

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 clearly states the verb 'Find' and resource 'translations for a specific key', specifying scope 'across all components and languages in a project'. It distinguishes from siblings like 'getTranslationForKey' by emphasizing comprehensive search across all components/languages rather than a single translation. However, it doesn't explicitly contrast with 'searchStringInProject' which might have overlapping functionality.

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 description provides no guidance on when to use this tool versus alternatives. It doesn't mention when-not scenarios, prerequisites, or compare with similar tools like 'getTranslationForKey' (single translation) or 'searchStringInProject' (string-based search). The agent must infer usage from the description alone without explicit direction.

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

getChangesByUserC

Get recent changes by a specific user

ParametersJSON Schema
NameRequiredDescriptionDefault
userYesUsername to filter by
limitNoNumber of changes to return (default: 20)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions 'recent changes' but doesn't define what 'recent' means (e.g., time range, recency criteria). It also lacks details on permissions, rate limits, output format, or pagination behavior. For a read operation with no annotation coverage, this leaves significant behavioral gaps.

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 a single, efficient sentence with zero waste. It's front-loaded with the core purpose ('Get recent changes by a specific user'), and every word earns its place without redundancy or fluff.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete. It doesn't explain what 'changes' entail (e.g., edit history, audit logs), the return format, or error handling. For a tool with 2 parameters and sibling complexity, more context is needed to guide the agent effectively.

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 100%, with clear parameter documentation in the schema. The description adds no additional meaning beyond implying user-based filtering, which is already covered by the schema's 'user' parameter description. Baseline 3 is appropriate as the schema does the heavy lifting.

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 clearly states the verb ('Get') and resource ('recent changes'), specifying it's filtered 'by a specific user'. It distinguishes from siblings like 'listRecentChanges' (no user filter) and 'getProjectChanges' (project-filtered), though not explicitly named. However, it doesn't fully differentiate from all siblings like 'getComponentChanges' or 'getUserStatistics', keeping it at 4 rather than 5.

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 description provides no guidance on when to use this tool versus alternatives. It doesn't mention siblings like 'listRecentChanges' (for all changes) or 'getProjectChanges' (for project-specific changes), nor does it specify prerequisites or exclusions. The agent must infer usage from the name and parameters alone.

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

getComponentChangesC

Get recent changes for a specific component

ParametersJSON Schema
NameRequiredDescriptionDefault
projectSlugYesThe slug of the project
componentSlugYesThe slug of the component

TDQS

C2.9/5.0
Behavior2/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 of behavioral disclosure. It states the tool retrieves 'recent changes' but doesn't specify what constitutes 'recent' (timeframe, limit), the format of returned changes, whether it's read-only (implied but not explicit), or any authentication/rate limit considerations. For a tool with no annotation coverage, this leaves significant behavioral gaps.

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 a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, with zero wasted content. Every word earns its place by conveying essential information about the tool's function.

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

Completeness2/5

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

Given the complexity of a changes retrieval tool with no annotations and no output schema, the description is incomplete. It doesn't explain what 'changes' entail (e.g., edits, additions, deletions), the return format, pagination, or error handling. For a tool that likely returns structured change data, more context is needed to guide the agent effectively.

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 100%, with both parameters ('projectSlug', 'componentSlug') clearly documented in the schema. The description adds no additional parameter semantics beyond implying the tool operates on a component within a project. Since the schema already fully describes the parameters, the baseline score of 3 is appropriateβ€”the description doesn't enhance or contradict the schema.

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 clearly states the action ('Get recent changes') and target resource ('for a specific component'), which provides a specific verb+resource combination. However, it doesn't distinguish this tool from similar siblings like 'getProjectChanges' or 'listRecentChanges', which likely retrieve changes at different scopes. The purpose is clear but lacks sibling differentiation.

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 description provides no guidance on when to use this tool versus alternatives. With siblings like 'getProjectChanges' and 'listRecentChanges' available, the agent has no indication whether this tool is for component-specific changes, project-wide changes, or unfiltered changes. There's no mention of prerequisites, exclusions, or comparative context.

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

getComponentLanguageProgressC

Get translation progress for all languages in a component

ParametersJSON Schema
NameRequiredDescriptionDefault
projectSlugYesThe slug of the project
componentSlugYesThe slug of the component

TDQS

C2.9/5.0
Behavior2/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 of behavioral disclosure. It mentions 'Get translation progress' but doesn't specify whether this is a read-only operation, if it requires authentication, rate limits, or what the output format looks like (e.g., structured data, percentages). For a tool with no annotations, this leaves significant gaps in understanding its behavior.

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 a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, making it easy to understand at a glance.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is insufficient for a tool that likely returns complex data (translation progress across languages). It doesn't explain the return values, data structure, or any behavioral traits, leaving the agent with incomplete context to use the tool effectively.

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?

The input schema has 100% description coverage, with clear documentation for both parameters ('projectSlug' and 'componentSlug'). The description adds no additional semantic context beyond what the schema provides, such as explaining what a 'slug' represents or how these parameters relate to the translation progress. Baseline 3 is appropriate when the schema does the heavy lifting.

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 clearly states the verb ('Get') and resource ('translation progress for all languages in a component'), making the purpose unambiguous. However, it doesn't explicitly differentiate from siblings like 'getComponentStatistics' or 'getLanguageStatistics', which might also provide related progress metrics, so it doesn't reach the highest score.

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 description provides no guidance on when to use this tool versus alternatives such as 'getComponentStatistics' or 'getLanguageStatistics', nor does it mention prerequisites or exclusions. It merely states what the tool does without contextual usage information.

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

getComponentStatisticsB

Get detailed statistics for a specific component

ParametersJSON Schema
NameRequiredDescriptionDefault
projectSlugYesThe slug of the project
componentSlugYesThe slug of the component

TDQS

B3.1/5.0
Behavior2/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 of behavioral disclosure. While 'Get' implies a read-only operation, the description doesn't disclose important behavioral traits like whether this requires authentication, has rate limits, returns paginated results, or what format the statistics come in. For a statistics retrieval tool with zero annotation coverage, this is a significant gap.

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

Conciseness5/5

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

The description is a single, efficient sentence that gets straight to the point with no wasted words. It's appropriately sized for a simple retrieval tool and front-loads the essential information about what the tool does.

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?

Given that this is a read-only statistics retrieval tool with 2 required parameters and 100% schema coverage, the description is minimally adequate. However, with no annotations and no output schema, the description should ideally provide more context about what kind of statistics are returned and in what format. The current description leaves the agent guessing about the nature of the output.

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?

The schema description coverage is 100%, with both parameters clearly documented in the schema itself. The description adds no additional parameter semantics beyond what's already in the schema (projectSlug and componentSlug). When schema coverage is this complete, the baseline score is 3 even without parameter information in the description.

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 clearly states the action ('Get detailed statistics') and the target resource ('for a specific component'), which provides a specific verb+resource combination. However, it doesn't differentiate this tool from similar sibling tools like 'getComponentLanguageProgress', 'getLanguageStatistics', 'getProjectStatistics', or 'getTranslationStatistics', all of which appear to retrieve statistical data about different entities.

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 description provides no guidance on when to use this tool versus alternatives. With multiple sibling tools that retrieve statistics (e.g., getComponentLanguageProgress, getLanguageStatistics, getProjectStatistics, getTranslationStatistics), there's no indication of what makes this tool distinct or when it should be preferred over those other options.

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

getLanguageStatisticsB

Get statistics for a specific language across all projects

ParametersJSON Schema
NameRequiredDescriptionDefault
languageCodeYesThe language code (e.g., en, es, fr)

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. While 'Get statistics' implies a read-only operation, it doesn't specify whether this requires authentication, has rate limits, returns aggregated data, or what format the statistics take. For a tool with zero annotation coverage, this leaves significant behavioral gaps.

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 a single, efficient sentence that directly states the tool's purpose without any unnecessary words. It's appropriately sized for a simple tool with one parameter and gets straight to the point.

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?

For a single-parameter read operation with no output schema, the description is minimally adequate but lacks important context. It doesn't explain what kind of statistics are returned (e.g., translation progress, string counts, user activity) or how the 'across all projects' aggregation works, which would be helpful given the complexity implied by statistics gathering.

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 100% (the single parameter 'languageCode' is fully documented in the schema), so the baseline is 3. The description adds no additional parameter information beyond what the schema already provides about the languageCode parameter.

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 clearly states the action ('Get statistics') and resource ('for a specific language across all projects'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'getTranslationStatistics' or 'getComponentLanguageProgress', which might have overlapping functionality.

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 description provides no guidance on when to use this tool versus alternatives like 'getTranslationStatistics' or 'getProjectStatistics'. It doesn't mention prerequisites, exclusions, or specific scenarios where this tool is preferred over other statistics-related tools in the sibling list.

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

getProjectChangesC

Get recent changes for a specific project

ParametersJSON Schema
NameRequiredDescriptionDefault
projectSlugYesThe slug of the project

TDQS

C2.9/5.0
Behavior2/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 states 'Get recent changes' but doesn't disclose behavioral traits such as what 'recent' means (e.g., time range, pagination), whether it's read-only, if it requires authentication, or rate limits. This leaves significant gaps for a tool that fetches data.

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 a single, efficient sentence that directly states the tool's purpose without any wasted words. It's appropriately sized and front-loaded, making it easy to parse quickly.

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

Completeness2/5

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

Given the complexity of fetching changes (which could involve time ranges, pagination, or filtering) and the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'recent' entails or what the return values look like, leaving the agent with insufficient context to use the tool effectively.

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?

The input schema has 100% description coverage, with 'projectSlug' documented as 'The slug of the project'. The description adds no additional meaning beyond this, such as format examples or constraints, so it meets the baseline for high schema coverage without compensating value.

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 clearly states the verb 'Get' and the resource 'recent changes for a specific project', making the purpose understandable. However, it doesn't distinguish this tool from sibling tools like 'getChangesByUser' or 'listRecentChanges', which likely serve similar purposes, so it misses full differentiation.

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 description provides no guidance on when to use this tool versus alternatives. With siblings like 'getChangesByUser' and 'listRecentChanges', it's unclear if this tool is for project-specific changes, user-specific changes, or general recent changes, leaving usage ambiguous.

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

getProjectDashboardC

Get a comprehensive dashboard overview for a project with all component statistics

ParametersJSON Schema
NameRequiredDescriptionDefault
projectSlugYesThe slug of the project

TDQS

C2.9/5.0
Behavior2/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 of behavioral disclosure. It states the tool retrieves a dashboard overview, implying a read-only operation, but fails to mention critical details like authentication needs, rate limits, response format, or whether it's a safe operation. This is a significant gap for a tool with no annotation coverage.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose without any wasted words. It appropriately sized for the tool's complexity, earning its place by clearly stating what the tool does.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete. It covers the basic purpose but omits essential behavioral context (e.g., response format, safety, authentication) and usage guidelines, making it inadequate for a tool that likely returns complex dashboard data.

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?

The input schema has 100% description coverage, with the single parameter 'projectSlug' documented as 'The slug of the project.' The description adds no additional meaning beyond this, such as format examples or constraints, so it meets the baseline of 3 where the schema does the heavy lifting.

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 clearly states the tool's purpose with the verb 'Get' and resource 'comprehensive dashboard overview for a project with all component statistics.' It distinguishes from siblings like getProjectStatistics or getComponentStatistics by emphasizing a comprehensive dashboard view, though it could be more explicit about the difference.

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 description provides no guidance on when to use this tool versus alternatives like getProjectStatistics or getComponentStatistics. It lacks explicit when/when-not instructions or named alternatives, leaving usage context implied at best.

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

getProjectStatisticsB

Get comprehensive statistics for a project including completion rates and string counts

ParametersJSON Schema
NameRequiredDescriptionDefault
projectSlugYesThe slug of the project

TDQS

B3.1/5.0
Behavior2/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 of behavioral disclosure. It mentions 'comprehensive statistics' but doesn't specify what 'comprehensive' entails, such as whether it includes historical data, real-time updates, or aggregated metrics. It also fails to disclose potential limitations like rate limits, authentication requirements, or data freshness, which are critical for a read operation in a project management context.

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 a single, efficient sentence that front-loads the core purpose ('Get comprehensive statistics for a project') and includes specific details ('completion rates and string counts'). There is no redundant or unnecessary information, making it highly concise and well-structured for quick understanding.

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?

Given the tool's moderate complexity (a read operation with one parameter) and no output schema, the description is minimally complete. It specifies what statistics are retrieved but lacks details on output format, such as whether it returns JSON with specific fields or aggregated summaries. With no annotations to supplement, it should ideally include more behavioral context to be fully helpful for an AI agent.

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?

The input schema has 100% description coverage, with 'projectSlug' clearly documented as 'The slug of the project'. The description adds no additional parameter semantics beyond this, such as format examples or constraints. Since the schema already provides adequate parameter information, the baseline score of 3 is appropriate, as the description doesn't compensate but doesn't detract either.

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 clearly states the verb ('Get') and resource ('comprehensive statistics for a project'), specifying what statistics are included ('completion rates and string counts'). It distinguishes from some siblings like 'getProjectDashboard' or 'getProjectChanges' by focusing on statistical metrics rather than dashboard views or change logs. However, it doesn't explicitly differentiate from 'getComponentStatistics' or 'getLanguageStatistics', which might provide similar statistics for different scopes.

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 description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, such as needing an existing project, or compare it to siblings like 'getProjectDashboard' (which might include statistics) or 'getComponentStatistics' (for component-level stats). Without this context, users must infer usage from the tool name alone.

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

getTranslationForKeyB

Get translation value for a specific key in a project

ParametersJSON Schema
NameRequiredDescriptionDefault
projectSlugYesThe slug of the project
componentSlugYesThe slug of the component
languageCodeYesThe language code (e.g., en, es, fr)
keyYesThe translation key to look up

TDQS

B3.1/5.0
Behavior2/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 of behavioral disclosure. It states the tool 'gets' a translation value, implying a read-only operation, but does not cover aspects like error handling (e.g., what happens if the key is not found), performance considerations, or authentication needs. This leaves significant gaps in understanding how the tool behaves beyond its basic function.

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 a single, efficient sentence that directly states the tool's purpose without unnecessary words or fluff. It is front-loaded with the core action and resource, making it easy to parse quickly, which is ideal for conciseness in tool descriptions.

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?

Given the tool's complexity (4 required parameters, no output schema, and no annotations), the description is minimally adequate but incomplete. It covers the basic purpose but lacks details on behavioral traits, error handling, and output format, which are crucial for a tool with multiple inputs and no structured output schema. This leaves the agent with gaps in understanding the full context of use.

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?

The input schema has 100% description coverage, with clear parameter definitions (e.g., 'projectSlug', 'languageCode'). The description does not add any additional meaning or context beyond what the schema provides, such as explaining relationships between parameters or usage examples. With high schema coverage, a baseline score of 3 is appropriate as the schema handles most of the documentation burden.

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 clearly states the action ('Get translation value') and the target resource ('for a specific key in a project'), which is specific and actionable. However, it does not explicitly differentiate from sibling tools like 'findTranslationsForKey' or 'searchStringInProject', which might have overlapping functionality, leaving some ambiguity about when to choose this tool over others.

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 description provides no guidance on when to use this tool versus alternatives. With siblings like 'findTranslationsForKey' and 'searchStringInProject' that might serve similar purposes, the lack of context or exclusions leaves the agent without clear usage instructions, relying solely on the tool name and description for inference.

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

getTranslationStatisticsB

Get statistics for a specific translation (project/component/language combination)

ParametersJSON Schema
NameRequiredDescriptionDefault
projectSlugYesThe slug of the project
componentSlugYesThe slug of the component
languageCodeYesThe language code (e.g., en, es, fr)

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states what the tool does without behavioral details. It doesn't disclose whether this is a read-only operation, potential rate limits, authentication needs, or what the statistics include (e.g., counts, percentages).

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 a single, efficient sentence that front-loads the purpose without unnecessary words. Every part of the sentence contributes directly to understanding the tool's function.

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?

For a read operation with no annotations and no output schema, the description is adequate but incomplete. It specifies the target resource clearly but lacks details on return values, error conditions, or behavioral constraints, leaving gaps for an agent to infer usage.

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 100%, so the schema fully documents the three parameters. The description adds minimal value by mentioning 'project/component/language combination', which aligns with the parameters but doesn't provide additional syntax or format details beyond the schema.

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 clearly states the action ('Get statistics') and the target resource ('for a specific translation'), specifying it's for a project/component/language combination. It distinguishes from siblings like getComponentStatistics or getLanguageStatistics by focusing on translation-level stats, though it doesn't explicitly name alternatives.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like getComponentStatistics or getLanguageStatistics. The description implies usage for translation-specific stats but doesn't specify scenarios, prerequisites, or exclusions.

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

getUserStatisticsC

Get contribution statistics for a specific user

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYesThe username to get statistics for

TDQS

C2.9/5.0
Behavior2/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 of behavioral disclosure. It states the action but doesn't mention whether this is a read-only operation, if it requires authentication, what the output format might be, or any rate limits. For a tool with no annotations, this is a significant gap in transparency.

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 a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded and wastes no space, making it easy for an agent to parse quickly and understand the core function.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete for effective tool use. It doesn't explain what 'contribution statistics' entail, the return format, or any behavioral traits like error handling. For a tool with no structured support, the description should provide more context to compensate.

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?

The schema description coverage is 100%, with the single parameter 'username' clearly documented in the schema. The description adds no additional semantic context beyond what the schema provides, such as examples or constraints on the username format, so it meets the baseline for adequate but unenriched parameter information.

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 clearly states the verb ('Get') and resource ('contribution statistics for a specific user'), making the purpose unambiguous. However, it doesn't distinguish this tool from similar siblings like 'getTranslationStatistics' or 'getComponentStatistics', which also retrieve statistics but for different entities, leaving room for potential confusion about scope.

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 description provides no guidance on when to use this tool versus alternatives. With siblings like 'getChangesByUser' or 'getTranslationStatistics', there's no indication of whether this tool is for aggregated contributions, specific metrics, or how it differs in context, leaving the agent to infer usage from the name alone.

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

listComponentsC

List components in a specific project

ParametersJSON Schema
NameRequiredDescriptionDefault
projectSlugYesThe slug of the project

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it's a list operation (implying read-only), but doesn't mention pagination, sorting, filtering options, rate limits, authentication requirements, or what the output looks like. For a tool with zero annotation coverage, this leaves significant behavioral gaps.

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 extremely concise (5 words) and front-loaded with all necessary information. There's zero wasted language, and every word earns its place by specifying the action, resource, and scope.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is insufficiently complete. It doesn't explain what 'components' are in this context, what data is returned, or any behavioral constraints. For a tool that presumably returns a list of items, more context about the output format and limitations would be helpful.

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?

The schema description coverage is 100%, with the single parameter 'projectSlug' fully documented in the schema. The description adds no additional parameter information beyond what's already in the structured schema, so it meets the baseline of 3 for adequate but not additive parameter semantics.

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 clearly states the verb ('List') and resource ('components'), and specifies the scope ('in a specific project'). It distinguishes from some siblings like 'listProjects' or 'listLanguages' by focusing on components, but doesn't explicitly differentiate from similar tools like 'getComponentStatistics' or 'getComponentChanges' that also involve components.

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 description provides minimal guidance by specifying 'in a specific project', but offers no explicit when-to-use rules, alternatives, or exclusions. It doesn't help the agent choose between this and sibling tools like 'getComponentStatistics' or 'searchUnitsWithFilters' that might also retrieve component-related data.

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

listLanguagesC

List languages available in a specific project

ParametersJSON Schema
NameRequiredDescriptionDefault
projectSlugYesThe slug of the project

TDQS

C2.9/5.0
Behavior2/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 states it's a list operation, implying read-only behavior, but doesn't disclose any behavioral traits such as pagination, rate limits, authentication needs, or what the output format looks like. This leaves significant gaps for a tool with no annotation coverage.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without any wasted words. It is appropriately sized and front-loaded, making it easy to understand at a glance.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what the list output includes (e.g., language codes, names, statuses) or any behavioral aspects like error handling. For a tool with no structured data support, more context is needed to be fully helpful.

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?

The input schema has 100% description coverage, with the single parameter 'projectSlug' well-documented in the schema. The description adds no additional meaning beyond implying the parameter is required for scoping, which is already clear from the schema. Baseline 3 is appropriate as the schema does the heavy lifting.

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 clearly states the verb 'List' and the resource 'languages available in a specific project', which provides a specific purpose. However, it doesn't explicitly differentiate from sibling tools like 'listComponents' or 'listProjects', which follow a similar pattern, so it doesn't fully distinguish itself.

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 description provides minimal context by specifying 'in a specific project', but offers no guidance on when to use this tool versus alternatives like 'getLanguageStatistics' or 'searchStringInProject'. There are no explicit when/when-not instructions or named alternatives mentioned.

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

listProjectsB

List all available Weblate projects

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the action without behavioral details. It doesn't disclose if this is a read-only operation, how results are returned (e.g., pagination, sorting), or any limitations (e.g., rate limits, authentication needs), leaving significant gaps.

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 a single, efficient sentence that directly states the tool's purpose without any fluff or redundancy. It's front-loaded and wastes no words, making it highly concise and well-structured.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete for a list operation. It doesn't explain what 'list' entails (e.g., format, fields, ordering) or potential behavioral aspects, leaving the agent with insufficient context despite the simple parameterless design.

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 has 0 parameters with 100% schema description coverage, so no parameter documentation is needed. The description appropriately doesn't mention parameters, aligning with the schema, earning a high baseline score for not adding unnecessary information.

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 clearly states the verb ('List') and resource ('all available Weblate projects'), making the purpose unambiguous. However, it doesn't differentiate from sibling tools like 'listComponents' or 'listLanguages' beyond the resource type, preventing a perfect score.

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 description provides no guidance on when to use this tool versus alternatives like 'getProjectStatistics' or 'getProjectDashboard'. It lacks context about use cases, prerequisites, or exclusions, offering only a basic statement of function.

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

listRecentChangesC

List recent changes across all projects in Weblate

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of changes to return (default: 20)
userNoFilter by specific user
timestampAfterNoShow changes after this timestamp (ISO format)
timestampBeforeNoShow changes before this timestamp (ISO format)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states 'List recent changes' but doesn't disclose behavioral traits like pagination, rate limits, authentication requirements, or what constitutes a 'change' (e.g., edits, additions). This leaves significant gaps for a tool with 4 parameters and no output schema.

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 a single, efficient sentence that front-loads the core purpose. There is no wasted verbiage or redundancy, making it highly concise and well-structured for quick understanding.

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

Completeness2/5

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

Given no annotations, no output schema, and 4 parameters, the description is incomplete. It lacks context on authentication, rate limits, return format (e.g., list of change objects), or error handling. For a tool that likely returns complex data, this minimal description leaves the agent under-informed.

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 100%, so the schema fully documents all 4 parameters. The description adds no additional parameter semantics beyond implying a default scope ('across all projects'), which is already suggested by the tool name. This meets the baseline for high schema coverage.

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 clearly states the verb 'List' and the resource 'recent changes across all projects in Weblate', which is specific and actionable. However, it doesn't explicitly differentiate from sibling tools like 'getChangesByUser' or 'getProjectChanges', which appear to be more targeted versions of similar functionality.

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 description provides no guidance on when to use this tool versus alternatives. With siblings like 'getChangesByUser' (user-specific) and 'getProjectChanges' (project-specific), the agent must infer that this tool is for cross-project changes without explicit comparison or exclusion statements.

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

searchStringInProjectC

Search for translations containing specific text in a project

ParametersJSON Schema
NameRequiredDescriptionDefault
projectSlugYesThe slug of the project to search in
valueYesThe text to search for
searchInNoWhere to search: source text, target translation, or bothboth

TDQS

C2.9/5.0
Behavior2/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 of behavioral disclosure. While it states this is a search operation (implying read-only), it doesn't describe what happens if no matches are found, whether results are paginated, what format the output takes, or any performance considerations like rate limits. For a search tool with zero annotation coverage, this leaves significant behavioral gaps.

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 a single, efficient sentence that clearly states the tool's purpose without unnecessary words. It's appropriately sized for a straightforward search tool and front-loads the essential information. Every word earns its place.

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

Completeness2/5

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

For a search tool with no annotations and no output schema, the description is insufficient. It doesn't explain what the search returns (e.g., matching translations, counts, or full records), how results are structured, or any limitations (e.g., case sensitivity, partial matches). Given the complexity of searching translations and the lack of structured output documentation, the description should provide more context about the operation's behavior and results.

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?

The schema description coverage is 100%, with all three parameters well-documented in the schema itself. The description doesn't add any meaningful parameter semantics beyond what's already in the schema (e.g., it doesn't explain what a 'projectSlug' is or provide examples of search patterns). With complete schema coverage, the baseline score of 3 is appropriate.

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 clearly states the action ('Search for translations containing specific text') and the resource ('in a project'), providing a specific verb+resource combination. However, it doesn't differentiate this tool from sibling tools like 'searchUnitsWithFilters' or 'findTranslationsForKey', which likely offer similar search functionality with different scopes or parameters.

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 description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'searchUnitsWithFilters' and 'findTranslationsForKey' available, there's no indication of when this text-based search is preferred over other search methods, nor any mention of prerequisites or exclusions.

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

searchUnitsWithFiltersB

Search translation units using Weblate's powerful filtering syntax. Supports filters like: state:<translated (untranslated), state:>=translated (translated), component:NAME, source:TEXT, target:TEXT, has:suggestion, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectSlugYesThe slug of the project
componentSlugYesThe slug of the component
languageCodeYesThe language code (e.g., sk, cs, fr)
searchQueryYesWeblate search query using their filter syntax. Examples: "state:<translated" (untranslated), "state:>=translated" (translated), "source:hello", "has:suggestion", "component:common AND state:<translated"
limitNoMaximum number of results to return (default: 50, max: 200)

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'powerful filtering syntax' and gives examples, but lacks critical details such as pagination behavior, rate limits, authentication requirements, error handling, or what the search results look like. This is insufficient for a search tool with multiple parameters.

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 efficiently structured in two sentences: the first states the purpose, and the second provides specific filter examples. Every sentence earns its place by adding practical value without redundancy, making it front-loaded and easy to parse.

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

Completeness2/5

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

Given the complexity of a search tool with 5 parameters, no annotations, and no output schema, the description is incomplete. It lacks information on behavioral traits (e.g., result format, limitations), and while it hints at usage, it doesn't fully compensate for the missing structured data, leaving gaps for an AI agent.

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 100%, so the schema already documents all parameters thoroughly. The description adds value by providing concrete examples of the 'searchQuery' parameter (e.g., 'state:<translated'), which helps clarify the filter syntax, but doesn't add significant meaning beyond what the schema provides for other parameters.

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 clearly states the tool searches translation units using Weblate's filtering syntax, which is a specific verb+resource combination. It distinguishes itself from siblings like 'searchStringInProject' by emphasizing the powerful filtering capabilities, though it doesn't explicitly contrast with all search-related siblings.

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 description implies usage through filter examples like 'state:<translated' and 'has:suggestion', suggesting when to use it for filtered searches. However, it doesn't provide explicit guidance on when to choose this tool over alternatives like 'searchStringInProject' or 'findTranslationsForKey', leaving some ambiguity.

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

writeTranslationC

Update or write a translation value for a specific key

ParametersJSON Schema
NameRequiredDescriptionDefault
projectSlugYesThe slug of the project
componentSlugYesThe slug of the component
languageCodeYesThe language code (e.g., en, es, fr)
keyYesThe translation key to update
valueYesThe new translation value
markAsApprovedNoWhether to mark as approved (default: false)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states 'Update or write' implying a mutation, but doesn't disclose behavioral traits like required permissions, whether it overwrites existing values, error handling, or rate limits. This leaves significant gaps for safe and effective use.

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 a single, efficient sentence that directly states the tool's function without unnecessary words. It's appropriately sized and front-loaded, making it easy to grasp quickly.

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

Completeness2/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 no output schema, the description is incomplete. It lacks details on behavioral aspects like side effects, return values, or error conditions, which are crucial for an AI agent to use it correctly in context with its siblings.

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 100%, so the schema fully documents all 6 parameters. The description adds no additional meaning beyond the schema, such as explaining relationships between parameters or usage examples. Baseline 3 is appropriate when schema does the heavy lifting.

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 clearly states the action ('Update or write') and resource ('translation value for a specific key'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'bulkWriteTranslations' or 'getTranslationForKey', which would require more specificity about scope or use cases.

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 description provides no guidance on when to use this tool versus alternatives. With siblings like 'bulkWriteTranslations' for multiple updates and 'getTranslationForKey' for retrieval, there's no mention of when this single-update tool is preferred, nor any prerequisites or exclusions.

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. Dates show when Glama detected each change.

  1. 20 tool updates
    • First observedbulkWriteTranslations
    • First observedfindTranslationsForKey
    • First observedgetChangesByUser
    • First observedgetComponentChanges
    • First observedgetComponentLanguageProgress
    • First observedgetComponentStatistics
    • First observedgetLanguageStatistics
    • First observedgetProjectChanges
    • First observedgetProjectDashboard
    • First observedgetProjectStatistics
    • First observedgetTranslationForKey
    • First observedgetTranslationStatistics
    • First observedgetUserStatistics
    • First observedlistComponents
    • First observedlistLanguages
    • First observedlistProjects
    • First observedlistRecentChanges
    • First observedsearchStringInProject
    • First observedsearchUnitsWithFilters
    • First observedwriteTranslation

TDQS

B3.4/5.0
Disambiguation4/5

Most tools have distinct purposes focused on different resources (projects, components, translations, users) and actions (get, list, search, write). However, some overlap exists between getTranslationForKey and findTranslationsForKey, and between various statistics tools, which could cause minor confusion. The descriptions help clarify the differences, but the boundaries aren't always perfectly clear.

Naming Consistency5/5

Tool names follow a highly consistent verb_noun pattern throughout, with clear action prefixes (get, list, search, write, find, bulkWrite) followed by specific resource nouns. All names use camelCase consistently, making them predictable and readable. There are no deviations in naming conventions across the 20 tools.

Tool Count3/5

With 20 tools, the count is borderline high for a translation management server, leaning toward feeling heavy. While Weblate is a complex platform, some tools like getChangesByUser, getComponentChanges, and getProjectChanges might be redundant with listRecentChanges, and multiple statistics tools could potentially be consolidated. The scope is broad but could be more streamlined.

Completeness5/5

The tool set provides comprehensive coverage for the Weblate translation management domain. It includes full CRUD operations (list, get, write, bulkWrite), detailed statistics across projects, components, languages, and users, search capabilities with advanced filters, change tracking, and dashboard views. There are no obvious gaps; agents can perform all core workflows without dead ends.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mmntm/weblate-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server