Repository navigation
Add mutating repository, translation, and review tools - #1093
Open
ehoogerbeets wants to merge 1 commit into
Open
ehoogerbeets wants to merge 1 commit into
ehoogerbeets wants to merge 1 commit into
Conversation
2 tasks
ehoogerbeets
added this pull request to stack #1102
September 24, 2026 23:04
Include locale-string parsing, temp-file JSON creates, and the workbench accept/reject/review/translate mappings. Co-authored-by: Cursor <cursoragent@cursor.com>
ehoogerbeets
force-pushed
the
mcp-06-writes
branch
from
October 5, 2026 22:24
f1a3995 to
1300a48
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this adds
The first write tools on the MCP server — everything before this was read-only:
mojito_repo_create/mojito_repo_delete— stand up or soft-delete a Mojito projectmojito_textunit_translation_add— save a translation for one string in one localemojito_review_update— accept / needs-review / needs-translation / reject, matching the workbench review modalAll four are destructive on prod. Tool descriptions tell the agent to confirm environment and ids, and to prefer
mojito-devwhile experimenting.What the underlying APIs do
POST /api/repositoriescreates a repository (uniquename; HTTP 409 on conflict). A simple create (name, optional description, optionalcheckSLA) is sent as CLI fields. Nested creates — target locales and integrity checkers — cannot be expressed as flat-fflags, so the client writes a temp JSON file and POSTs it with--input, then deletes that file on both success and failure.Locales use Mojito CLI
-lencoding, e.g.de-DE,(fr-CA)->fr-FR(inheritance),(en-GB)(partial). The parser rejects malformed strings rather than guessing.DELETE /api/repositories/{id}is a soft delete: the repo disappears from normal listings; it is not a hard wipe of TM data. Still treated as destructive because it hides a real project from the UI.POST /api/textunits(translation add) creates a new currentTMTextUnitVariant. It needstmTextUnitId, numericlocaleId(from search/info, not the BCP-47 tag), andtarget. OptionalstatusandincludedInLocalizedFileset review state;includedInLocalizedFile=falseis how Mojito keeps a string out of shipped files. Empty target/comment andfalseflags are sent as typed fields so they are not dropped as falsy.Review is the same POST, with workbench actions mapped for the agent so it does not have to remember status + inclusion pairs:
acceptAPPROVEDreviewREVIEW_NEEDEDtranslateTRANSLATION_NEEDEDrejectTRANSLATION_NEEDEDrejectis the dangerous mapping: a wrong mapping would quietly drop a string from shipped files. The API also requires the currenttargettext even when you are only changing review state.Why an agent would use them
Create/delete is for standing up a sandbox repo or tearing one down after a test. Translation add is "here is the corrected French for this string." Review update is the workbench accept/reject flow after a human (or the agent, with confirmation) has looked at a translation. Prefer
mojito_review_updateover raw status fields for those four outcomes.Stack
Depends on the text-unit reads PR. Next in this stack: live integration tests, then source-asset import.
Test plan
cd mojito-mcp && pnpm testMade with Cursor
Made with Cursor