Weblate MCP Server
Provides seamless integration with Weblate translation management platform, enabling full API access to manage translation projects, components, translations, and languages. Allows creating and listing projects, handling translation components, updating and searching translations, and working with all supported languages in a Weblate instance.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Weblate MCP Servershow me all untranslated strings in the frontend project"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
Option 1: Use with npx (Recommended)
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-mcpOption 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 startServer 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
Claude Desktop (npx method - Recommended)
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 |
| List all available Weblate projects with URLs and metadata |
π§ Component Management
Tool | Description |
| List components in a specific project with source language details |
βοΈ Translation Management
Tool | Description |
| Efficient search using Weblate's native filtering syntax |
| Search for translations containing specific text in a project |
| Get translation value for a specific key |
| Update or write translation values with approval support |
| Batch update multiple translations efficiently with error handling |
| Find all translations for a specific key across languages |
π Why searchUnitsWithFilters is Recommended
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 stringsstate:=10- Find strings that need editingsource:"login"- Find strings containing "login"component:common AND state:=0- Complex filters
π Language Management
Tool | Description |
| List languages available in a specific project |
π Translation Statistics Dashboard
Tool | Description |
| Comprehensive project statistics with completion rates and string counts |
| Detailed statistics for a specific component |
| Complete dashboard overview with all component statistics |
| Statistics for specific translation (project/component/language) |
| Translation progress for all languages in a component with progress bars |
| Statistics for a language across all projects |
| User contribution statistics and activity metrics |
π Change Tracking & History
Tool | Description |
| Recent changes across all projects with user and timestamp filtering |
| Recent changes for a specific project |
| Recent changes for a specific component |
| 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 |
Complete documentation overview and quick start | |
Installation, configuration, and Claude Desktop setup | |
Complete API documentation with examples | |
Contributing, development setup, and testing | |
Codebase structure, patterns, and design decisions | |
Release management and publishing workflow | |
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 buildAdding New Tools
Create tool file in
src/tools/Implement MCP tool interface
Add to service providers
Write tests
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:
Fork the repository
Create a feature branch from main
Implement changes with tests
Update documentation
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 toolsbulkWriteTranslationsB
Update multiple translations in batch for efficient bulk operations
| Name | Required | Description | Default |
|---|---|---|---|
| projectSlug | Yes | The slug of the project | |
| componentSlug | Yes | The slug of the component | |
| languageCode | Yes | The language code (e.g., en, es, fr) | |
| translations | Yes | Array of translations to update |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| projectSlug | Yes | The slug of the project | |
| key | Yes | The exact translation key to find |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | Username to filter by | |
| limit | No | Number of changes to return (default: 20) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| projectSlug | Yes | The slug of the project | |
| componentSlug | Yes | The slug of the component |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| projectSlug | Yes | The slug of the project | |
| componentSlug | Yes | The slug of the component |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| projectSlug | Yes | The slug of the project | |
| componentSlug | Yes | The slug of the component |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| languageCode | Yes | The language code (e.g., en, es, fr) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| projectSlug | Yes | The slug of the project |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| projectSlug | Yes | The slug of the project |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| projectSlug | Yes | The slug of the project |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| projectSlug | Yes | The slug of the project | |
| componentSlug | Yes | The slug of the component | |
| languageCode | Yes | The language code (e.g., en, es, fr) | |
| key | Yes | The translation key to look up |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| projectSlug | Yes | The slug of the project | |
| componentSlug | Yes | The slug of the component | |
| languageCode | Yes | The language code (e.g., en, es, fr) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | The username to get statistics for |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| projectSlug | Yes | The slug of the project |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| projectSlug | Yes | The slug of the project |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of changes to return (default: 20) | |
| user | No | Filter by specific user | |
| timestampAfter | No | Show changes after this timestamp (ISO format) | |
| timestampBefore | No | Show changes before this timestamp (ISO format) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| projectSlug | Yes | The slug of the project to search in | |
| value | Yes | The text to search for | |
| searchIn | No | Where to search: source text, target translation, or both | both |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| projectSlug | Yes | The slug of the project | |
| componentSlug | Yes | The slug of the component | |
| languageCode | Yes | The language code (e.g., sk, cs, fr) | |
| searchQuery | Yes | Weblate search query using their filter syntax. Examples: "state:<translated" (untranslated), "state:>=translated" (translated), "source:hello", "has:suggestion", "component:common AND state:<translated" | |
| limit | No | Maximum number of results to return (default: 50, max: 200) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| projectSlug | Yes | The slug of the project | |
| componentSlug | Yes | The slug of the component | |
| languageCode | Yes | The language code (e.g., en, es, fr) | |
| key | Yes | The translation key to update | |
| value | Yes | The new translation value | |
| markAsApproved | No | Whether to mark as approved (default: false) |
TDQS
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.
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.
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.
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.
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.
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.
20 tool updates
- First observed
bulkWriteTranslations - First observed
findTranslationsForKey - First observed
getChangesByUser - First observed
getComponentChanges - First observed
getComponentLanguageProgress - First observed
getComponentStatistics - First observed
getLanguageStatistics - First observed
getProjectChanges - First observed
getProjectDashboard - First observed
getProjectStatistics - First observed
getTranslationForKey - First observed
getTranslationStatistics - First observed
getUserStatistics - First observed
listComponents - First observed
listLanguages - First observed
listProjects - First observed
listRecentChanges - First observed
searchStringInProject - First observed
searchUnitsWithFilters - First observed
writeTranslation
TDQS
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.
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.
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.
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
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
MCP server for Crowdin β projects, files, strings, translation progress, tasks, and members.
MCP server for Translation Services
Translate MCP β wraps LibreTranslate API (https://libretranslate.com/)
An MCP server that provides access to Testiny projects, test cases and test runs
Related MCP Servers
- AlicenseCqualityCmaintenanceAn MCP server for processing XLIFF and TMX translation files, enabling parsing, validation, and manipulation of translation units in localization workflows.92MIT
- AlicenseBqualityDmaintenanceAn MCP server that wraps the Tolgee localization platform API, enabling LLMs to manage translation projects, keys, translations, languages, and related workflows.27MIT
- FlicenseBqualityDmaintenanceAn MCP server for managing Lokalise translations, enabling creation, retrieval, and deletion of translation keys.3-
- AlicenseNot gradedqualityAmaintenanceMCP server for translating JSON localization files via DeepL API or local LLMs, enabling agents to estimate, check, and run translations.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mmntm/weblate-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server