{"name":"mutator","title":"Mutator","description":"Mutator's Model Context Protocol server. Connect an AI agent to a Mutator workspace to list formats, start test runs and read performance. No tool here can publish: a person schedules every post in Mutator.","version":"1.0.0","protocolVersions":["2025-06-18","2025-03-26","2024-11-05"],"transport":"streamable-http","endpoint":"https://mutator.app/mcp","authentication":{"type":"bearer","description":"OAuth 2.1 (clients that are given only this URL sign in through Mutator), or a Mutator API key as a bearer token, from Settings → API keys. Either needs a workspace owner on any paid plan. Read scope is enough for everything except starting runs and saving drafts or schedules.","oauthProtectedResource":"https://mutator.app/.well-known/oauth-protected-resource/mcp"},"tools":[{"name":"mutator_whoami","title":"Check the connection","description":"Confirm the API key works and report which Mutator workspace it reaches and what it may do. Call this first when the connection is new or a later call fails with an authorization error.","scope":"read"},{"name":"mutator_list_automations","title":"List automations","description":"List every automation in the workspace with its id, name and status (draft, active or paused). Start here when the user refers to an automation by name and you need its id.","scope":"read"},{"name":"mutator_get_automation","title":"Get one automation","description":"Read one automation in detail: status, its schedule if it has one, and its own spending limits. Use it before starting a run to check the automation is active and what a run may cost.","scope":"read"},{"name":"mutator_list_runs","title":"List recent runs","description":"List recent runs of one automation, newest first, with status, whether each was a dry run, and what it cost. Use it to answer 'did it work' and 'what did it cost'.","scope":"read"},{"name":"mutator_get_run","title":"Get one run","description":"Read one run with its per-step detail, so a failure can be traced to the step that caused it. Runs are asynchronous: a run still marked running has not finished, so poll rather than assume.","scope":"read"},{"name":"mutator_list_approvals","title":"List what is waiting for approval (nothing, since 20 September 2026)","description":"Always empty. Approvals were removed on 20 September 2026: a run publishes nothing, and a post is made by a person picking a file, an account and a time in Mutator. Tell the person that, rather than reporting an empty queue as if something were wrong. Use mutator_get_run to report what a run made.","scope":"read"},{"name":"mutator_get_analytics","title":"Get performance","description":"Read how published content performed over a window of days, the same report the dashboard shows. Use it to answer what worked and to suggest what to run next.","scope":"read"},{"name":"mutator_get_spend_limits","title":"Get spending limits","description":"Report the workspace's daily and monthly spending ceilings and how much of each is already committed. Generation runs on Mutator's own accounts and is paid for in credits, and the ceilings still apply, so check this before starting anything that generates: a run that would pass a ceiling is refused before any provider is contacted.","scope":"read"},{"name":"mutator_start_run","title":"Start a run","description":"Make from a format, the way Make does in Mutator. A format that is not switched on (any draft, and every format on Pro) always runs DRY, from its latest draft. Start a run of an automation. Defaults to a DRY RUN, which skips publishing but not generation: it makes the same paid generation calls a real run makes, costs the same credits or provider charges, and counts against the same spend limits. So start one only when the user wants a run, and leave it dry unless they have asked for a real run in this conversation. A real run still publishes nothing on its own: anything it generates goes to the workspace's library, and is posted only when a person schedules it in Mutator. Requires an idempotencyKey; replaying the same value returns the original run instead of starting a second one, so retry with the same key rather than a new one.","scope":"write"},{"name":"mutator_list_brands","title":"List brands","description":"List the brands in the workspace. Every automation belongs to one, so this is the first call when creating anything: mutator_create_automation needs a brandId from here. The brand carries the voice an automation writes in: audience, tone, call to action.","scope":"read"},{"name":"mutator_list_connections","title":"List connected accounts","description":"List the accounts and providers this workspace has connected, with the id a publishing step needs. A publish step points at a connection, not at a platform name: there is no 'post to TikTok' field, only 'post to this account, which happens to be TikTok'. Read this before wiring one, because a publish step with no connection is refused at activation rather than saved and forgotten.","scope":"read"},{"name":"mutator_list_formats","title":"List content formats","description":"The content formats Mutator offers, and the niches they suit: first the formats the Mutator team built and published to its library (newThisWeek marks the ones added in the last 7 days), then the built-in catalogue. Use one of these when building; do not invent a format. New means newly added to the library, never trending: there is no trend, virality or discovery data anywhere in Mutator, so nothing here knows what is trending on any platform. How the workspace's own published posts did is mutator_get_analytics. A niche only ORDERS this list, it never filters it. If a user asks for 'viral formats in my niche', these are the formats, ordered by fit, and the word viral is not something this tool can stand behind. A library format with a public page carries its address as page: an example of it made for a made-up app, to show the user before they build one. One marked needsScreenshot is made only in the Mutator app, where the user chooses their screenshot.","scope":"read"},{"name":"mutator_list_step_types","title":"List the steps an automation can be built from","description":"The complete vocabulary of steps, with the settings each one takes. An automation is a graph of these joined by edges. Read this before building one: the step list is closed, and a graph naming a type that is not here is refused. Most settings have defaults, so a step can usually be sent with an empty config and still run.","scope":"read"},{"name":"mutator_create_automation","title":"Create a draft automation","description":"Create a new format (an automation, as a DRAFT), optionally with its steps already wired. Formats are not switched on or run on a timer: a person makes a batch from one when they need it, looks at what came back, and schedules what should post. mutator_start_run makes from a draft the same way, as a dry run that publishes nothing. An invalid graph is still saved. The problems come back as `issues` for you to fix and save again, rather than the whole call failing. Report what you built and what is left to decide; do not describe it as live.","scope":"write"},{"name":"mutator_save_automation_graph","title":"Save an automation's steps as a draft","description":"Replace an automation's steps with the ones given, saved as a DRAFT. Make, and mutator_start_run on a format that is not switched on, use the latest draft; an older switched-on automation keeps its current version until a person activates the draft. Problems come back as `issues` rather than failing the call; read them and save a corrected graph.","scope":"write"},{"name":"mutator_set_schedule","title":"Set an automation's schedule","description":"Rarely needed: formats are made in batches by a person, not run on a timer, and posting times belong to each account's schedule in Mutator. Set when an automation would run, saved switched OFF. Turning a schedule on requires an already-active automation, so this can only ever prepare one. The settings survive until a person activates it. A schedule runs an automation AT MOST ONCE A DAY: it holds a single time, and frequency chooses which days rather than how many times within one. Two posts a day is not a schedule setting: it is one daily run producing two items, with maxPostsPerDay on the publishing step.","scope":"write"}],"documentation":"https://mutator.app/docs/mcp"}