airstrings-mcp
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| AIRSTRINGS_API_KEY | No | AirStrings API key (project key `as_proj_…` covering every environment of one project, or a legacy 64-hex environment key). Used when AIRSTRINGS_ORG_API_KEY is not set; takes precedence over the workspace key and stored login. In CI, prefer a project key here. | |
| AIRSTRINGS_ORG_API_KEY | No | AirStrings organization key (`as_org_…`) covering every project of the org. Highest precedence: AIRSTRINGS_ORG_API_KEY > AIRSTRINGS_API_KEY > workspace key > stored login. For CI across several projects use a gated (non-full-power) org key. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| airstrings_initA | Bind a directory to an AirStrings project; call this first in a repo with no .airstrings workspace, before any other airstrings_* tool. Writes .airstrings/config.json and stores the key in the workspace. Credentials: api_key, else AIRSTRINGS_ORG_API_KEY, AIRSTRINGS_API_KEY, else the stored login. With none it returns status "pending" and verification_uri_complete: show the user that URL, and once they approve call init again with the same arguments. With an org key it creates a project named after the folder (or name) unless project names an existing one. Returns the project, whether it was created, the active environment, all environments and sections. Use airstrings_login instead only to store an org login without binding a directory. |
| airstrings_loginA | Log in to an AirStrings organization and store an org key on this machine, without binding a directory. The first call returns status "pending" and verification_uri_complete: an organization owner approves that URL in the browser, then call login again to finish; if it is denied or expires, start over. Returns the organization once stored. Use it before airstrings_init when several directories will share one login; to set up a single repo, call airstrings_init directly (it logs in when needed). |
| airstrings_strings_setA | Add or update one string key in the local workspace CSV (.airstrings//.csv, or .airstrings/strings.csv without a section). Overwrites the given locales of that key and keeps its other locales. Local only unless push=true, which also upserts the key in the active environment; on a protected environment that push is refused and the local change is rolled back. Returns the key, section and whether it was pushed. Use this for a few keys; after editing many keys, run airstrings_push once instead. Apps see the change only after airstrings_publish. |
| airstrings_strings_rmA | Remove a string key, or one locale of it, from the local workspace CSV. Local only unless push=true, which also deletes it in the active environment (refused on a protected environment). Deletion cannot be undone except by setting the string again. Returns what was removed and whether it was pushed. Apps keep the old value until the next airstrings_publish. |
| airstrings_strings_lsA | List the strings in the local workspace CSVs: key, section, format and the value per locale. Reads files only, never the API, so it shows unpushed edits; run airstrings_pull first to see what the server currently holds. |
| airstrings_pushA | Upload the local workspace CSVs to the active environment: upserts every key and locale value, overwriting the server's values for those keys, and creates missing sections. Keys that exist only on the server are left alone (nothing is deleted). Refused on a protected environment: push to staging, then a human promotes. Returns upserted and error counts, the sections and any failed keys. Use after many airstrings_strings_set edits; for one key, strings_set with push=true is enough. Apps see the change only after airstrings_publish. |
| airstrings_pullA | Download the active environment's strings into the local workspace, overwriting the local CSVs with the server state; unpushed local edits in those files are lost, so run airstrings_push first if you want to keep them. Read-only on the server. Returns the string, section and file counts. Use it to start from the server's state; to inspect local files without touching them, use airstrings_strings_ls. |
| airstrings_publishA | Make the active environment's current server strings live: builds one bundle per locale, signs it (Ed25519) and uploads it to the CDN, where the SDKs pick it up on their next fetch. Publishes what is on the server, so run airstrings_push first for local edits. Each call creates a new bundle revision that replaces the live one; to undo, set the old values and publish again. Refused on a protected environment (production): publish to staging, then use airstrings_promote_preview and hand the apply_url to a human. Returns per-locale status and the published_at time. |
| airstrings_sdk_configA | Public, non-secret SDK setup values for one environment — safe to show the user, commit and embed in app code; no API key or secret is returned. Returns organization, project and environment IDs, Ed25519 public key(s) (verification keys, not credentials), protection (protected/open) and ready-to-paste initializers for web, react_native, ios, android and go. Use it when wiring the AirStrings SDK into an app. Works with any API key of the project — a staging key returns production's config, so no production key is needed for SDK setup. |
| airstrings_statusA | Workspace status, same as |
| airstrings_env_listA | List every environment of the project, same as |
| airstrings_promote_previewA | Read-only diff of what promoting strings from one environment to another would change (added, updated, and extra keys per locale). Applies nothing — a human reviews the diff and applies the promotion at apply_url in the dashboard. Use it after publishing to staging to hand a production release to a human; agents cannot promote to a protected environment themselves. |
| airstrings_variant_setA | Create or replace the A/B experiment for one text-format string key that already exists on the server in the active environment. Replaces the whole experiment as a new draft, so pass every variant each time; the key's base string is the implicit 'control' variant. Refused while the experiment is running (stop it first) and on a protected environment. Does not start it: call airstrings_variant_start, then airstrings_publish. Returns the stored experiment. To read the current one first, use airstrings_variant_status. |
| airstrings_variant_statusA | Read the A/B experiment for one string key in the active environment: status (draft, running or stopped), allocation and each variant's values. Returns an error if the key has no experiment. Use it before airstrings_variant_set to keep existing variants, or to check state before start, stop or promote. |
| airstrings_variant_startA | Start a draft A/B experiment for one string key so its variants are served, split by allocation; takes effect in apps after the next airstrings_publish. Only a draft can start, and every variant must have a value for every locale of the base string. Refused on a protected environment (production): start it in a writable environment instead. Returns the updated experiment. Create the draft first with airstrings_variant_set. |
| airstrings_variant_stopA | Stop a running A/B experiment for one string key: every user gets the base string again after the next airstrings_publish. A stopped experiment cannot restart; airstrings_variant_set creates a new draft, and a stopped experiment can still be promoted. Refused on a protected environment. Returns the updated experiment. To keep a winning variant instead, use airstrings_variant_promote. |
| airstrings_variant_promoteA | End a running or stopped A/B experiment for one string key by making a variant's values the key's base string, overwriting the old base values, then republish that environment's bundles automatically. Cannot be undone except by setting the old values again. Refused on a protected environment (production): promote in a writable environment instead. Returns the experiment and per-locale publish results. Use it once a winner is clear; to end the test without changing the base string, use airstrings_variant_stop. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 17 tools
Each tool has a distinct resource+action, and descriptions explicitly disambiguate near-neighbors ('for just the environment list, use airstrings_env_list'; 'to end the test without changing the base string, use airstrings_variant_stop'). The variant family (set/status/start/stop/promote) and the strings family (set/rm/ls vs push/pull/publish) are clearly separated despite similar names.
All tools share the airstrings_ prefix with snake_case and a consistent resource-namespace scheme (variant_*, strings_*, env_list). Minor deviation: some tools are verb-only (login, push, pull, publish) while others are noun_verb (variant_set, strings_rm), but the grouping remains predictable.
17 tools is slightly heavy but each earns its place across distinct domains (auth, workspace init/status, strings sync, publish, A/B variants, SDK config). The 5-tool variant lifecycle is the main driver of the count and is genuinely necessary for the experiment workflow.
Strong lifecycle coverage: auth, init, local/server string CRUD, push/pull/publish, environment listing, promotion preview, and full A/B variant lifecycle. Minor gaps: no environment create/delete or project management/teardown operations, but the core localization and release loop is complete.