A bundle is Loco’s unit of translation: a plugin, a theme, or WordPress core. Each defines one or more text domains, and each domain is where translated strings actually live.
translations/list-bundles lists them all, with how many translation files each already has.
At a glance
| Ability | translations/list-bundles |
| Toolset | Loco Translate — toolset/loco-translate |
| Group | Loco Translate › Discovery |
| Requires | Loco Translate, active on the site |
| Capability | manage_options |
| Safety | Read-only — changes nothing |
| Repeatable | Idempotent — running it twice leaves the same result |
| Ships in | AcrossAI Abilities Manager 0.0.34 and later |
How it works
This is not a directory listing. A bundle’s text domains and the place its translations belong come from Loco’s own configuration, which is why bundles with no translations yet appear here — and those are usually the ones you are looking for.
Filter with type to narrow to plugins, themes or core, and search to match on name, handle or slug.
A busy site carries well over a hundred bundles. per_page defaults to 100, and total tells you how many existed before that cap applied.
Input
| Name | Type | Required | What it is |
|---|---|---|---|
type | string | No | Only plugin, theme or core bundles. |
search | string | No | Case-insensitive match against name, handle or slug. |
per_page | integer | No — defaults to 100, max 300 | Maximum rows to return. |
What comes back
| Name | Type | What it is |
|---|---|---|
bundles | array | One entry per bundle: name, handle, type, text domains, file counts. |
count | integer | How many bundles were returned. |
total | integer | How many exist before per_page was applied. |
success | boolean | Whether the call completed. |
message | string | A one-line summary of what happened, suitable for showing a human. |
error_code | string | Present only on failure — a stable machine-readable reason, such as a missing field, a wrong field type or an unmet confirmation. |
Example
Ask your assistant:
Which plugins on this site can be translated?
It resolves to one call:
{
"ability": "translations/list-bundles",
"parameters": {
"type": "plugin",
"per_page": 50
}
}Worth knowing
- Bundles with zero translation files are included on purpose — that is the work queue.
- Check
totalagainstcountbefore concluding a bundle is absent. - A bundle can define more than one text domain. Reading it with
translations/get-bundleshows which.
Related abilities
- Get Translation Bundle — one bundle in full
- List Translation Strings — the strings inside one
- Get Translation Status — whether writes will work at all
Get the plugins:
AcrossAI Abilities Manager · AcrossAI MCP Manager
Browse the rest: Every ability, by category