# OneSky Localization MCP

> OneSky (App & Web Localization API) MCP Server manages your global product localization workflow. It lets your AI agent interact with OneSky to manage project groups, create new projects for different platforms (iOS, Android, Web), monitor translation progress across multiple languages, and export structured files. This server is for teams that need to scale products internationally without leaving their IDE or terminal.

## Overview
- **Category:** developer-tools
- **Price:** Free
- **Tags:** i18n, l10n, app-localization, translation-management, globalization

## Description

When you're dealing with global content, managing localization shouldn't feel like a nightmare. This OneSky Localization API MCP Server lets your AI agent handle complex translation workflows through simple commands. You use it to manage everything from setting up project containers to exporting finished files for every platform.

**Managing Project Structure and Lifecycle**
You need an organizational backbone? Use `create_project_group` to establish a top-level container that holds all your related localization projects. Need to see what groups you've set up? Run `list_project_groups`. When the whole structure is done, remember you can clean house with `delete_project_group`, which removes the entire group and everything inside it.

Inside those groups, you build specific projects for your platforms. You use `create_project` to set up a functional project—whether that's for iOS, Android, or Web. If you need to check what types of platforms OneSky supports, run `list_project_types`. To see every sub-project contained within a group, call `list_projects`. Need the full details on an existing setup? `show_project` gives you all that metadata. You can adjust things later using `update_project`, which modifies project names or associated groups. If a project is obsolete and you gotta ditch it, `delete_project` permanently removes the structure.

**Handling Source Files and Content Flow**
Before anything gets translated, you gotta upload the source material. Use `upload_file` to add a source file into a specific project's folder. To see what files are already sitting there, run `list_uploaded_files`. If you mess up an upload or need to remove something old, `delete_file` takes that specific source file out of the project.

To manage where your content lives globally, first call `list_all_locales` to get a list of every locale code OneSky supports. You can then run `list_enabled_languages` within a group to see which languages are active for a given project. For billing and tracking purposes, you start by calling `make_quotation` to generate an estimate based on your parameters; the server also lets you view all linked orders using `list_orders`, or get complete details on one specific order with `show_order_details`. If you're ready to commit, you use `create_order` to make a new record.

**Monitoring Translation Progress and Status**
Keeping tabs on translation progress is where this server shines. You can check the current status for a single file using `translation_status`, which returns the completion percentage. To get an overview of how far along your translations are, use `list_project_languages`. This shows you all the languages for a project and their respective translation percentages. If you need to know about bulk imports or tasks, you can list them with `list_import_tasks` or check deep status info on one task using `show_import_task`. To get full details on the container group itself, call `show_project_group`; otherwise, `show_project` handles individual project metadata.

**Exporting and Retrieving Final Assets**
When everything's done, you need the content. You don't have to log into a dashboard—your agent gets it straight from the server. For App Store listings, `export_app_store_description` pulls out all descriptions and their translations into structured JSON format. If you need a massive bundle of translated text for multiple languages at once, use `export_multilingual_file`. Need just the translation for one specific language pair? `export_translations` handles that. You can also pull localized content in bulk formats using `list_project_languages`, which shows progress alongside available locale data.

**The Bottom Line**
You connect your OneSky account, and your AI client treats this server like a backend API endpoint for all things localization. It lets you perform actions like listing projects (`list_projects`), getting group details (`show_project_group`), or checking order status (`show_order_details`) without leaving your IDE or terminal.

## Tools

### create_order
Generates a new order record within OneSky.

### create_project_group
Establishes a top-level container for related localization projects.

### create_project
Sets up a specific, functional project inside an existing project group.

### delete_file
Removes a specific source file from a project.

### delete_project_group
Removes the top-level container group, including all sub-projects.

### delete_project
Permanently removes an entire project structure.

### export_app_store_description
Exports App Store descriptions and their translations into a JSON file format.

### export_multilingual_file
Downloads translation content in various multilingual formats for bulk use.

### export_translations
Gets translations for a specific language and source file pair.

### list_all_locales
Retrieves a list of every locale code OneSky supports globally.

### list_enabled_languages
Lists all languages activated within a specific project group.

### list_import_tasks
Shows the current status and list of import tasks associated with a project.

### list_orders
Retrieves a paginated list of all orders linked to a specific project.

### list_project_groups
Returns a complete listing of every project group you manage.

### list_project_languages
Shows the languages for a project and their current translation progress percentages.

### list_project_types
Returns available formats (like iOS, Web) that can be used to create projects.

### list_projects
Lists all the sub-projects contained within a given project group.

### list_uploaded_files
Retrieves a list of files that have been uploaded to a specific project.

### make_quotation
Generates an estimate or quote for translation services based on defined parameters.

### show_import_task
Displays detailed status and information about a single import task.

### show_order_details
Retrieves all details associated with a specific order ID.

### show_project_group
Retrieves detailed information about a specific project group container.

### show_project
Fetches full metadata and status for a specified project.

### translation_status
Returns the current translation progress percentage for one specific file.

### update_project
Modifies details of an existing project, such as its name or associated group.

### upload_file
Adds a source file into the designated folder for a specific project.

## Prompt Examples

**Prompt:** 
```
List all my OneSky project groups.
```

**Response:** 
```
I've retrieved your project groups. You have 3 active groups: 'Marketing Site' (ID: 4567), 'iOS App' (ID: 8910), and 'Android App' (ID: 1112). Which one would you like to explore?
```

**Prompt:** 
```
Show me the translation progress for project 7890.
```

**Response:** 
```
For project 7890, here is the current progress: English (Base) is 100% complete, Portuguese (Brazil) is at 85%, and Spanish is at 42%. Would you like more details on a specific language?
```

**Prompt:** 
```
Create a new project group named 'Global Expansion' with English as the base language.
```

**Response:** 
```
Successfully created the project group 'Global Expansion' (ID: 131415) with 'en' as the base locale. You can now start adding projects to this group.
```

## Capabilities

### Manage Project Groups
Create, list, and remove organizational containers (project groups) for related localization assets.

### Handle Project Lifecycle
Set up new projects for specific platforms (like Android or Web), retrieve their metadata, or delete them entirely.

### Monitor Translation Status
Check the current completion percentage and progress of translations for all enabled languages within a project.

### Export Localized Content
Generate structured export files, such as App Store descriptions or multilingual translation bundles, directly from the server output.

### Manage Files and Orders
Upload source files to a project, list existing uploaded files, or view order details for billing/fulfillment tracking.

## Use Cases

### Rolling out an update to the Android app
The QA lead needs to ensure all localized strings are ready before deployment. They ask their agent: 'What is the translation progress for Project ID 123 on Android?' The agent runs `list_project_languages`, confirming that Spanish and German have hit 98% completion, solving a manual dashboard check.

### Setting up a brand new market group
The PM launches into the conversation: 'Create a project group called 'APAC Expansion' and add a Web Project for it.' The agent runs `create_project_group` then immediately calls `create_project`, setting up the entire structure in two steps, avoiding manual setup time.

### Checking historical file data
A developer needs to verify if a specific source string was translated correctly months ago. They use `list_uploaded_files` on the project and then run `export_translations` for that file/locale, retrieving structured proof of what was available at the time.

### Troubleshooting an order issue
The finance team is questioning a translation charge. They instruct their agent: 'Show me all orders for Project X.' The agent runs `list_orders` and then uses `show_order_details`, providing the exact details needed to reconcile the bill without calling support.

## Benefits

- Track progress without leaving your terminal. Instead of navigating the OneSky UI to see translation status, use `list_project_languages` or `translation_status`. You get a direct percentage readout for multiple languages in one API call.
- Handle complex asset creation on demand. Need a new project for a niche market? Use `create_project` and specify the platform type (e.g., Web, Android). The agent handles the setup, saving you from navigating through dropdown menus.
- Get structured data immediately. When you run `export_app_store_description`, you don't get a PDF—you get clean JSON ready to pipe into your product database or CI/CD pipeline.
- Manage the whole container structure. If you need to organize five different regional products, use `create_project_group` first. This tool lets you build out complex structures before touching any individual project.
- Build a full audit trail. You can list all associated orders using `list_orders` and view specifics with `show_order_details`, giving your PM team a single source of truth for billing and content status.

## How It Works

The bottom line is: You tell your agent what needs to happen in OneSky, and it handles the API calls and delivers clean, actionable results back to you.

1. Provide your OneSky API Key and Secret credentials when subscribing.
2. Tell your AI client the action you need (e.g., 'List all project groups').
3. The server executes the tool call, returning structured data like IDs, statuses, or file lists.

## Frequently Asked Questions

**How do I list all my OneSky project groups using list_project_groups?**
You prompt your agent with 'list all project groups.' The server runs `list_project_groups` and returns a clean list of IDs and names, letting you know exactly what containers exist for your localization assets.

**Can I check the translation progress using translation_status?**
Yes. You provide the specific file ID to the agent, which then calls `translation_status`. It returns a single percentage and status update for that exact file, perfect for targeted checks.

**What is the difference between create_project and create_project_group?**
A project group (`create_project_group`) is the high-level container holding related projects. A project (`create_project`) is the actual, functional asset (like 'iOS App') that holds the files needing translation.

**How do I export translations using export_multilingual_file?**
You instruct your agent to 'Export multilingual file for Project X.' The server executes `export_multilingual_file` and returns a structured data package, skipping the manual download steps.

**I need to check if I can add a new locale. Should I use list_all_locales?**
Yes. Ask your agent to run `list_all_locales`. This tool fetches every supported locale code from the OneSky system, letting you verify target market support before setting up projects.

**I'm setting up my account; how do I use `show_project_group` to verify that my API connection works?**
You pass a Project Group ID to the tool. It returns all metadata for that group, confirming your authentication and scope permissions. This allows you to check things like the name, associated project types, and current status before building complex workflows.

**Before running `delete_project`, how can I use `show_project` to confirm exactly what data I plan on removing?**
Always run `show_project` first. It pulls all the detailed metadata, including file lists and associated projects, providing a final review of the scope you're about to delete. This prevents accidental loss of critical localization assets.

**I need to correct some project details; what parameters must I pass to the `update_project` tool?**
You need the Project ID and a map of fields you want to change. The tool accepts specific keys (like description or status) so you only modify the necessary data points without affecting other records.

**How can I check the translation progress for a specific project?**
You can use the `list_project_languages` tool by providing the Project ID. It will return a list of all languages associated with the project along with their respective translation progress percentages.

**Can I see which project types OneSky supports through this agent?**
Yes, simply run the `list_project_types` tool. It will provide a comprehensive list of all available project formats, such as 'website', 'ios', or 'android', that you can use when creating new projects.

**Is it possible to create a new project group directly from the conversation?**
Absolutely. Use the `create_project_group` tool, specifying the name and optionally the base locale. The agent will handle the API request and confirm the creation of your new group.