{
  "server": "maru",
  "version": "1.2.0",
  "endpoint": "https://maru.audio/mcp",
  "docs": "https://maru.audio/docs/mcp",
  "setup": {
    "install": "npx maruaudio mcp install",
    "local": "npx maruaudio mcp install --local",
    "skill": "npx maruaudio skill install",
    "llms": "https://maru.audio/llms.txt"
  },
  "tools": [
    {
      "name": "maru_prepare_sample_pack",
      "title": "Prepare a sample-pack expansion brief as server-ready JSON",
      "description": "Clarify the user's idea, role/count/duration mix, instruments, unique twists, tempo/key intent, cover style and maximum credit budget with helpful suggestions. Target an existing collection by stable ID and preserve its members and visibility. Preserve its cover unless a new cover was requested. This validates and expands a brief only: it does not enqueue, spend credits, verify collection ownership, generate artwork/audio or promise a notification. Never say queued until authenticated server admission returns a real receipt. Explain that generation and checks will take a while and depend on queue capacity; thank the user for their idea and contribution. Existing collection metadata is not overwritten by this planning command.",
      "permission": "mcp:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "brief": {
            "type": "object",
            "properties": {
              "schema": {
                "type": "string",
                "const": "maru.sample-pack-brief/v1"
              },
              "requestKey": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120,
                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
              },
              "collectionId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200,
                "description": "Existing collection ID confirmed by the user or a trusted collection lookup; never match by name"
              },
              "idea": {
                "type": "string",
                "minLength": 1,
                "maxLength": 2000
              },
              "title": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              },
              "description": {
                "type": "string",
                "minLength": 1,
                "maxLength": 2000
              },
              "genre": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "mood": {
                "minItems": 1,
                "maxItems": 12,
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 120
                }
              },
              "uniqueTwists": {
                "minItems": 1,
                "maxItems": 12,
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 120
                }
              },
              "targetAdditionalSounds": {
                "type": "integer",
                "minimum": 1,
                "maximum": 256,
                "description": "Distinct accepted additions, excluding existing members and duplicate derivatives"
              },
              "roles": {
                "minItems": 1,
                "maxItems": 32,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 48,
                      "pattern": "^[a-z][a-z0-9-]*$"
                    },
                    "name": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 100
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "one-shot",
                        "loop",
                        "phrase",
                        "sfx"
                      ]
                    },
                    "count": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 256
                    },
                    "prompt": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 2000
                    },
                    "negativePrompt": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 1000
                    },
                    "instruments": {
                      "minItems": 1,
                      "maxItems": 12,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 120
                      }
                    },
                    "variations": {
                      "minItems": 1,
                      "maxItems": 32,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 120
                      },
                      "description": "Concrete distinct performance or texture directions, cycled across this role's candidates"
                    },
                    "durationSeconds": {
                      "type": "object",
                      "properties": {
                        "min": {
                          "type": "number",
                          "exclusiveMinimum": 0,
                          "maximum": 120
                        },
                        "max": {
                          "type": "number",
                          "exclusiveMinimum": 0,
                          "maximum": 120
                        }
                      },
                      "required": [
                        "min",
                        "max"
                      ],
                      "additionalProperties": false
                    },
                    "bpm": {
                      "anyOf": [
                        {
                          "type": "number",
                          "minimum": 20,
                          "maximum": 300
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "key": {
                      "anyOf": [
                        {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 40
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "meter": {
                      "anyOf": [
                        {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 16
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "bars": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 32
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "tags": {
                      "minItems": 1,
                      "maxItems": 20,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 120
                      }
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "type",
                    "count",
                    "prompt",
                    "instruments",
                    "variations",
                    "durationSeconds",
                    "bpm",
                    "key",
                    "meter",
                    "bars",
                    "tags"
                  ],
                  "additionalProperties": false
                }
              },
              "cover": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "action": {
                        "type": "string",
                        "const": "preserve"
                      }
                    },
                    "required": [
                      "action"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "action": {
                        "type": "string",
                        "const": "generate"
                      },
                      "prompt": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 3000
                      },
                      "style": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 500
                      },
                      "palette": {
                        "minItems": 1,
                        "maxItems": 12,
                        "type": "array",
                        "items": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 120
                        }
                      },
                      "composition": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 1000
                      },
                      "avoid": {
                        "minItems": 1,
                        "maxItems": 20,
                        "type": "array",
                        "items": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 120
                        }
                      }
                    },
                    "required": [
                      "action",
                      "prompt",
                      "style",
                      "palette",
                      "composition",
                      "avoid"
                    ],
                    "additionalProperties": false
                  }
                ]
              },
              "delivery": {
                "type": "object",
                "properties": {
                  "channels": {
                    "anyOf": [
                      {
                        "type": "number",
                        "const": 1
                      },
                      {
                        "type": "number",
                        "const": 2
                      }
                    ]
                  },
                  "format": {
                    "type": "string",
                    "const": "wav"
                  },
                  "sampleRate": {
                    "anyOf": [
                      {
                        "type": "number",
                        "const": 44100
                      },
                      {
                        "type": "number",
                        "const": 48000
                      }
                    ]
                  },
                  "bitDepth": {
                    "anyOf": [
                      {
                        "type": "number",
                        "const": 16
                      },
                      {
                        "type": "number",
                        "const": 24
                      }
                    ]
                  },
                  "midi": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "channels",
                  "format",
                  "sampleRate",
                  "bitDepth",
                  "midi"
                ],
                "additionalProperties": false
              },
              "budget": {
                "type": "object",
                "properties": {
                  "maxCredits": {
                    "type": "number",
                    "exclusiveMinimum": 0,
                    "maximum": 1000000
                  },
                  "maxReplacementCandidates": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 256
                  }
                },
                "required": [
                  "maxCredits",
                  "maxReplacementCandidates"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "schema",
              "requestKey",
              "collectionId",
              "idea",
              "title",
              "description",
              "genre",
              "mood",
              "uniqueTwists",
              "targetAdditionalSounds",
              "roles",
              "cover",
              "delivery",
              "budget"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "brief"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "const": "prepared"
          },
          "queued": {
            "type": "boolean",
            "const": false
          },
          "creditsCharged": {
            "type": "number",
            "const": 0
          },
          "request": {
            "type": "object",
            "properties": {
              "schema": {
                "type": "string",
                "const": "maru.sample-pack-brief/v1"
              },
              "requestKey": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120,
                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
              },
              "collectionId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200,
                "description": "Existing collection ID confirmed by the user or a trusted collection lookup; never match by name"
              },
              "idea": {
                "type": "string",
                "minLength": 1,
                "maxLength": 2000
              },
              "title": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              },
              "description": {
                "type": "string",
                "minLength": 1,
                "maxLength": 2000
              },
              "genre": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "mood": {
                "minItems": 1,
                "maxItems": 12,
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 120
                }
              },
              "uniqueTwists": {
                "minItems": 1,
                "maxItems": 12,
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 120
                }
              },
              "targetAdditionalSounds": {
                "type": "integer",
                "minimum": 1,
                "maximum": 256,
                "description": "Distinct accepted additions, excluding existing members and duplicate derivatives"
              },
              "roles": {
                "minItems": 1,
                "maxItems": 32,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 48,
                      "pattern": "^[a-z][a-z0-9-]*$"
                    },
                    "name": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 100
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "one-shot",
                        "loop",
                        "phrase",
                        "sfx"
                      ]
                    },
                    "count": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 256
                    },
                    "prompt": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 2000
                    },
                    "negativePrompt": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 1000
                    },
                    "instruments": {
                      "minItems": 1,
                      "maxItems": 12,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 120
                      }
                    },
                    "variations": {
                      "minItems": 1,
                      "maxItems": 32,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 120
                      },
                      "description": "Concrete distinct performance or texture directions, cycled across this role's candidates"
                    },
                    "durationSeconds": {
                      "type": "object",
                      "properties": {
                        "min": {
                          "type": "number",
                          "exclusiveMinimum": 0,
                          "maximum": 120
                        },
                        "max": {
                          "type": "number",
                          "exclusiveMinimum": 0,
                          "maximum": 120
                        }
                      },
                      "required": [
                        "min",
                        "max"
                      ],
                      "additionalProperties": false
                    },
                    "bpm": {
                      "anyOf": [
                        {
                          "type": "number",
                          "minimum": 20,
                          "maximum": 300
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "key": {
                      "anyOf": [
                        {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 40
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "meter": {
                      "anyOf": [
                        {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 16
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "bars": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 32
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "tags": {
                      "minItems": 1,
                      "maxItems": 20,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 120
                      }
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "type",
                    "count",
                    "prompt",
                    "instruments",
                    "variations",
                    "durationSeconds",
                    "bpm",
                    "key",
                    "meter",
                    "bars",
                    "tags"
                  ],
                  "additionalProperties": false
                }
              },
              "cover": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "action": {
                        "type": "string",
                        "const": "preserve"
                      }
                    },
                    "required": [
                      "action"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "action": {
                        "type": "string",
                        "const": "generate"
                      },
                      "prompt": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 3000
                      },
                      "style": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 500
                      },
                      "palette": {
                        "minItems": 1,
                        "maxItems": 12,
                        "type": "array",
                        "items": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 120
                        }
                      },
                      "composition": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 1000
                      },
                      "avoid": {
                        "minItems": 1,
                        "maxItems": 20,
                        "type": "array",
                        "items": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 120
                        }
                      }
                    },
                    "required": [
                      "action",
                      "prompt",
                      "style",
                      "palette",
                      "composition",
                      "avoid"
                    ],
                    "additionalProperties": false
                  }
                ]
              },
              "delivery": {
                "type": "object",
                "properties": {
                  "channels": {
                    "anyOf": [
                      {
                        "type": "number",
                        "const": 1
                      },
                      {
                        "type": "number",
                        "const": 2
                      }
                    ]
                  },
                  "format": {
                    "type": "string",
                    "const": "wav"
                  },
                  "sampleRate": {
                    "anyOf": [
                      {
                        "type": "number",
                        "const": 44100
                      },
                      {
                        "type": "number",
                        "const": 48000
                      }
                    ]
                  },
                  "bitDepth": {
                    "anyOf": [
                      {
                        "type": "number",
                        "const": 16
                      },
                      {
                        "type": "number",
                        "const": 24
                      }
                    ]
                  },
                  "midi": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "channels",
                  "format",
                  "sampleRate",
                  "bitDepth",
                  "midi"
                ],
                "additionalProperties": false
              },
              "budget": {
                "type": "object",
                "properties": {
                  "maxCredits": {
                    "type": "number",
                    "exclusiveMinimum": 0,
                    "maximum": 1000000
                  },
                  "maxReplacementCandidates": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 256
                  }
                },
                "required": [
                  "maxCredits",
                  "maxReplacementCandidates"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "schema",
              "requestKey",
              "collectionId",
              "idea",
              "title",
              "description",
              "genre",
              "mood",
              "uniqueTwists",
              "targetAdditionalSounds",
              "roles",
              "cover",
              "delivery",
              "budget"
            ],
            "additionalProperties": false
          },
          "mode": {
            "type": "string",
            "const": "append"
          },
          "preserveExistingMembers": {
            "type": "boolean",
            "const": true
          },
          "preserveVisibility": {
            "type": "boolean",
            "const": true
          },
          "candidateCount": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "candidates": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "roleId": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "prompt": {
                  "type": "string"
                },
                "variation": {
                  "type": "string"
                },
                "intent": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 48,
                      "pattern": "^[a-z][a-z0-9-]*$"
                    },
                    "name": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 100
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "one-shot",
                        "loop",
                        "phrase",
                        "sfx"
                      ]
                    },
                    "count": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 256
                    },
                    "prompt": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 2000
                    },
                    "negativePrompt": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 1000
                    },
                    "instruments": {
                      "minItems": 1,
                      "maxItems": 12,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 120
                      }
                    },
                    "variations": {
                      "minItems": 1,
                      "maxItems": 32,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 120
                      },
                      "description": "Concrete distinct performance or texture directions, cycled across this role's candidates"
                    },
                    "durationSeconds": {
                      "type": "object",
                      "properties": {
                        "min": {
                          "type": "number",
                          "exclusiveMinimum": 0,
                          "maximum": 120
                        },
                        "max": {
                          "type": "number",
                          "exclusiveMinimum": 0,
                          "maximum": 120
                        }
                      },
                      "required": [
                        "min",
                        "max"
                      ],
                      "additionalProperties": false
                    },
                    "bpm": {
                      "anyOf": [
                        {
                          "type": "number",
                          "minimum": 20,
                          "maximum": 300
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "key": {
                      "anyOf": [
                        {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 40
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "meter": {
                      "anyOf": [
                        {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 16
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "bars": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 32
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "tags": {
                      "minItems": 1,
                      "maxItems": 20,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 120
                      }
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "type",
                    "count",
                    "prompt",
                    "instruments",
                    "variations",
                    "durationSeconds",
                    "bpm",
                    "key",
                    "meter",
                    "bars",
                    "tags"
                  ],
                  "additionalProperties": false
                }
              },
              "required": [
                "id",
                "roleId",
                "title",
                "prompt",
                "variation",
                "intent"
              ],
              "additionalProperties": false
            }
          },
          "requiredMeasuredMetadata": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "status",
          "queued",
          "creditsCharged",
          "request",
          "mode",
          "preserveExistingMembers",
          "preserveVisibility",
          "candidateCount",
          "candidates",
          "requiredMeasuredMetadata",
          "message"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "maru_generate_sample",
      "title": "Generate and save an account sample with required MIDI and analysis",
      "description": "Run the named sample workflow: generate one seeded audio variant, extract monophonic MIDI, analyze its exact PCM, then materialize the account sample. Audio readiness and enrichment readiness are separate. Inspect capabilities before starting.",
      "permission": "mcp:generate",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false
      },
      "_meta": {
        "maruaudio.com/execution": "workflow"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "requestKey": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "task": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "generate_audio"
              },
              "modelId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              },
              "prompt": {
                "type": "string",
                "minLength": 1,
                "maxLength": 4000
              },
              "audioType": {
                "type": "string",
                "enum": [
                  "one-shot",
                  "loop",
                  "sfx"
                ]
              },
              "seconds": {
                "type": "number",
                "minimum": 0.01,
                "maximum": 3600
              },
              "seeds": {
                "minItems": 1,
                "maxItems": 16,
                "type": "array",
                "items": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 4294967295
                }
              }
            },
            "required": [
              "type",
              "prompt",
              "audioType",
              "seconds"
            ],
            "additionalProperties": false
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          }
        },
        "required": [
          "requestKey",
          "task"
        ],
        "additionalProperties": false,
        "x-maru-typescript": "import(\"@maruaudio/infer-contract/audio-jobs\").InferGenerateSampleRequest"
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "const": "workflow"
          },
          "schema": {
            "type": "string",
            "const": "maru-audio-job/v1"
          },
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "workflow": {
            "type": "string",
            "enum": [
              "generate_sample",
              "generate_kit",
              "generate_instrument",
              "generate_song",
              "analyze_sound"
            ]
          },
          "version": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "running",
              "complete",
              "partial",
              "failed",
              "cancelled"
            ]
          },
          "lastSequence": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "steps": {
            "type": "object",
            "properties": {
              "total": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "completed": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "failed": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "total",
              "completed",
              "failed"
            ],
            "additionalProperties": false
          },
          "readiness": {
            "type": "object",
            "properties": {
              "audio": {
                "type": "boolean"
              },
              "requiredEnrichment": {
                "type": "boolean"
              }
            },
            "required": [
              "audio",
              "requiredEnrichment"
            ],
            "additionalProperties": false
          },
          "sampleId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "childJobIds": {
            "maxItems": 32,
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 120
            }
          }
        },
        "required": [
          "kind",
          "schema",
          "id",
          "workflow",
          "version",
          "status",
          "lastSequence",
          "steps",
          "readiness"
        ],
        "additionalProperties": false,
        "x-maru-typescript": "import(\"@maruaudio/infer-contract/audio-jobs\").InferAudioWorkflowHandle"
      }
    },
    {
      "name": "maru_analyze_sample",
      "title": "Extract beat MIDI or stems from an owned library sample",
      "description": "Analyze an existing owned sample by clip ID. Rhythm extracts Beat This beat/downbeat markers and metronome MIDI, not kick/snare/shaker transcription. Stems runs the existing separation and pitched transcription workflow. Results retain the exact source identity. Follow get_audio_workflow, then read its child jobs and artifacts.",
      "permission": "mcp:generate",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "workflow"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "clipId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120,
            "pattern": "^[A-Za-z0-9][A-Za-z0-9._:~/-]*$"
          },
          "mode": {
            "default": "rhythm",
            "type": "string",
            "enum": [
              "rhythm",
              "stems"
            ]
          }
        },
        "required": [
          "clipId"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "const": "workflow"
          },
          "schema": {
            "type": "string",
            "const": "maru-audio-job/v1"
          },
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "workflow": {
            "type": "string",
            "enum": [
              "generate_sample",
              "generate_kit",
              "generate_instrument",
              "generate_song",
              "analyze_sound"
            ]
          },
          "version": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "running",
              "complete",
              "partial",
              "failed",
              "cancelled"
            ]
          },
          "lastSequence": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "steps": {
            "type": "object",
            "properties": {
              "total": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "completed": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "failed": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "total",
              "completed",
              "failed"
            ],
            "additionalProperties": false
          },
          "readiness": {
            "type": "object",
            "properties": {
              "audio": {
                "type": "boolean"
              },
              "requiredEnrichment": {
                "type": "boolean"
              }
            },
            "required": [
              "audio",
              "requiredEnrichment"
            ],
            "additionalProperties": false
          },
          "sampleId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "childJobIds": {
            "maxItems": 32,
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 120
            }
          }
        },
        "required": [
          "kind",
          "schema",
          "id",
          "workflow",
          "version",
          "status",
          "lastSequence",
          "steps",
          "readiness"
        ],
        "additionalProperties": false,
        "x-maru-typescript": "import(\"@maruaudio/infer-contract/audio-jobs\").InferAudioWorkflowHandle"
      }
    },
    {
      "name": "maru_get_audio_workflow",
      "title": "Read an owned named audio workflow",
      "description": "Read the status, readiness and child job identities of an owned named audio workflow. Follow its child jobs to inspect source-bound artifacts.",
      "permission": "mcp:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "runId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120,
            "pattern": "^[A-Za-z0-9][A-Za-z0-9._:~/-]*$"
          }
        },
        "required": [
          "runId"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "const": "workflow"
          },
          "schema": {
            "type": "string",
            "const": "maru-audio-job/v1"
          },
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "workflow": {
            "type": "string",
            "enum": [
              "generate_sample",
              "generate_kit",
              "generate_instrument",
              "generate_song",
              "analyze_sound"
            ]
          },
          "version": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "running",
              "complete",
              "partial",
              "failed",
              "cancelled"
            ]
          },
          "lastSequence": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "steps": {
            "type": "object",
            "properties": {
              "total": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "completed": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "failed": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "total",
              "completed",
              "failed"
            ],
            "additionalProperties": false
          },
          "readiness": {
            "type": "object",
            "properties": {
              "audio": {
                "type": "boolean"
              },
              "requiredEnrichment": {
                "type": "boolean"
              }
            },
            "required": [
              "audio",
              "requiredEnrichment"
            ],
            "additionalProperties": false
          },
          "sampleId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "childJobIds": {
            "maxItems": 32,
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 120
            }
          }
        },
        "required": [
          "kind",
          "schema",
          "id",
          "workflow",
          "version",
          "status",
          "lastSequence",
          "steps",
          "readiness"
        ],
        "additionalProperties": false,
        "x-maru-typescript": "import(\"@maruaudio/infer-contract/audio-jobs\").InferAudioWorkflowHandle"
      }
    },
    {
      "name": "maru_list_audio_workflows",
      "title": "List owned named audio workflows",
      "description": "Page through your owned named audio workflows and their current status. Use the returned cursor to continue browsing earlier runs.",
      "permission": "mcp:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          },
          "cursor": {
            "type": "string",
            "minLength": 1,
            "maxLength": 500
          }
        },
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "items": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "kind": {
                  "type": "string",
                  "const": "workflow"
                },
                "schema": {
                  "type": "string",
                  "const": "maru-audio-job/v1"
                },
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 120
                },
                "workflow": {
                  "type": "string",
                  "enum": [
                    "generate_sample",
                    "generate_kit",
                    "generate_instrument",
                    "generate_song",
                    "analyze_sound"
                  ]
                },
                "version": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 9007199254740991
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "pending",
                    "running",
                    "complete",
                    "partial",
                    "failed",
                    "cancelled"
                  ]
                },
                "lastSequence": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9007199254740991
                },
                "steps": {
                  "type": "object",
                  "properties": {
                    "total": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 9007199254740991
                    },
                    "completed": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 9007199254740991
                    },
                    "failed": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 9007199254740991
                    }
                  },
                  "required": [
                    "total",
                    "completed",
                    "failed"
                  ],
                  "additionalProperties": false
                },
                "readiness": {
                  "type": "object",
                  "properties": {
                    "audio": {
                      "type": "boolean"
                    },
                    "requiredEnrichment": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "audio",
                    "requiredEnrichment"
                  ],
                  "additionalProperties": false
                },
                "sampleId": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 120
                },
                "childJobIds": {
                  "maxItems": 32,
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 120
                  }
                }
              },
              "required": [
                "kind",
                "schema",
                "id",
                "workflow",
                "version",
                "status",
                "lastSequence",
                "steps",
                "readiness"
              ],
              "additionalProperties": false
            }
          },
          "nextCursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items",
          "nextCursor"
        ],
        "additionalProperties": false,
        "x-maru-typescript": "import(\"@maruaudio/infer-contract/audio-jobs\").InferAudioWorkflowList"
      }
    },
    {
      "name": "maru_cancel_audio_workflow",
      "title": "Cancel an owned named audio workflow",
      "description": "Request cancellation of an owned named audio workflow and its pending work without spending new credits. Completed artifacts remain retained.",
      "permission": "mcp:generate",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "runId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120,
            "pattern": "^[A-Za-z0-9][A-Za-z0-9._:~/-]*$"
          }
        },
        "required": [
          "runId"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "const": "workflow"
          },
          "schema": {
            "type": "string",
            "const": "maru-audio-job/v1"
          },
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "workflow": {
            "type": "string",
            "enum": [
              "generate_sample",
              "generate_kit",
              "generate_instrument",
              "generate_song",
              "analyze_sound"
            ]
          },
          "version": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "running",
              "complete",
              "partial",
              "failed",
              "cancelled"
            ]
          },
          "lastSequence": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "steps": {
            "type": "object",
            "properties": {
              "total": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "completed": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "failed": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "total",
              "completed",
              "failed"
            ],
            "additionalProperties": false
          },
          "readiness": {
            "type": "object",
            "properties": {
              "audio": {
                "type": "boolean"
              },
              "requiredEnrichment": {
                "type": "boolean"
              }
            },
            "required": [
              "audio",
              "requiredEnrichment"
            ],
            "additionalProperties": false
          },
          "sampleId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "childJobIds": {
            "maxItems": 32,
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 120
            }
          }
        },
        "required": [
          "kind",
          "schema",
          "id",
          "workflow",
          "version",
          "status",
          "lastSequence",
          "steps",
          "readiness"
        ],
        "additionalProperties": false,
        "x-maru-typescript": "import(\"@maruaudio/infer-contract/audio-jobs\").InferAudioWorkflowHandle"
      }
    },
    {
      "name": "maru_retry_audio_workflow_step",
      "title": "Retry a failed step of an owned audio workflow",
      "description": "Retry a failed step of an owned named audio workflow using a new retained request key. Completed work is reused; admission and credits are checked again.",
      "permission": "mcp:generate",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false
      },
      "_meta": {
        "maruaudio.com/execution": "workflow"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "runId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120,
            "pattern": "^[A-Za-z0-9][A-Za-z0-9._:~/-]*$"
          },
          "stepId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120,
            "pattern": "^[A-Za-z0-9][A-Za-z0-9._:~/-]*$"
          },
          "requestKey": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120,
            "pattern": "^[A-Za-z0-9][A-Za-z0-9._:~/-]*$"
          }
        },
        "required": [
          "runId",
          "stepId",
          "requestKey"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "const": "workflow"
          },
          "schema": {
            "type": "string",
            "const": "maru-audio-job/v1"
          },
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "workflow": {
            "type": "string",
            "enum": [
              "generate_sample",
              "generate_kit",
              "generate_instrument",
              "generate_song",
              "analyze_sound"
            ]
          },
          "version": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "running",
              "complete",
              "partial",
              "failed",
              "cancelled"
            ]
          },
          "lastSequence": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "steps": {
            "type": "object",
            "properties": {
              "total": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "completed": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "failed": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "total",
              "completed",
              "failed"
            ],
            "additionalProperties": false
          },
          "readiness": {
            "type": "object",
            "properties": {
              "audio": {
                "type": "boolean"
              },
              "requiredEnrichment": {
                "type": "boolean"
              }
            },
            "required": [
              "audio",
              "requiredEnrichment"
            ],
            "additionalProperties": false
          },
          "sampleId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "childJobIds": {
            "maxItems": 32,
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 120
            }
          }
        },
        "required": [
          "kind",
          "schema",
          "id",
          "workflow",
          "version",
          "status",
          "lastSequence",
          "steps",
          "readiness"
        ],
        "additionalProperties": false,
        "x-maru-typescript": "import(\"@maruaudio/infer-contract/audio-jobs\").InferAudioWorkflowHandle"
      }
    },
    {
      "name": "maru_submit_audio_job",
      "title": "Submit a versioned audio task",
      "description": "Submit generation, stem separation, speech recognition, pitched or classified drum MIDI transcription, or analysis. Drum transcription uses mode drums and the exact Inverse Drum Machine model; rhythm analysis produces a beat grid. Inspect list_audio_capabilities first. Returns a durable job handle; use get_audio_job to poll. Raw jobs retain private artifacts and do not add an account sample.",
      "permission": "mcp:generate",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false
      },
      "_meta": {
        "maruaudio.com/execution": "job"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "submission": {
            "type": "object",
            "properties": {
              "schema": {
                "type": "string",
                "const": "maru-audio-job/v1"
              },
              "requestKey": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              },
              "task": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "const": "generate_audio"
                      },
                      "modelId": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 120
                      },
                      "prompt": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 4000
                      },
                      "audioType": {
                        "type": "string",
                        "enum": [
                          "one-shot",
                          "loop",
                          "sfx"
                        ]
                      },
                      "seconds": {
                        "type": "number",
                        "minimum": 0.01,
                        "maximum": 3600
                      },
                      "seeds": {
                        "minItems": 1,
                        "maxItems": 16,
                        "type": "array",
                        "items": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 4294967295
                        }
                      }
                    },
                    "required": [
                      "type",
                      "prompt",
                      "audioType",
                      "seconds"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "const": "separate_audio_stems"
                      },
                      "modelId": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 120
                      },
                      "source": {
                        "anyOf": [
                          {
                            "type": "object",
                            "properties": {
                              "contentType": {
                                "type": "string",
                                "enum": [
                                  "audio/wav",
                                  "audio/flac",
                                  "audio/mpeg",
                                  "audio/ogg"
                                ]
                              },
                              "bytes": {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 536870912
                              },
                              "sha256": {
                                "type": "string",
                                "pattern": "^[a-f0-9]{64}$"
                              },
                              "pcm": {
                                "type": "object",
                                "properties": {
                                  "sha256": {
                                    "type": "string",
                                    "pattern": "^[a-f0-9]{64}$"
                                  },
                                  "encoding": {
                                    "type": "string",
                                    "const": "f32le-interleaved"
                                  },
                                  "sampleRate": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 384000
                                  },
                                  "channels": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 32
                                  },
                                  "frames": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 9007199254740991
                                  }
                                },
                                "required": [
                                  "sha256",
                                  "encoding",
                                  "sampleRate",
                                  "channels",
                                  "frames"
                                ],
                                "additionalProperties": false
                              },
                              "kind": {
                                "type": "string",
                                "const": "creator_asset"
                              },
                              "assetId": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 120
                              }
                            },
                            "required": [
                              "contentType",
                              "bytes",
                              "sha256",
                              "pcm",
                              "kind",
                              "assetId"
                            ],
                            "additionalProperties": false
                          },
                          {
                            "type": "object",
                            "properties": {
                              "contentType": {
                                "type": "string",
                                "enum": [
                                  "audio/wav",
                                  "audio/flac",
                                  "audio/mpeg",
                                  "audio/ogg"
                                ]
                              },
                              "bytes": {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 536870912
                              },
                              "sha256": {
                                "type": "string",
                                "pattern": "^[a-f0-9]{64}$"
                              },
                              "pcm": {
                                "type": "object",
                                "properties": {
                                  "sha256": {
                                    "type": "string",
                                    "pattern": "^[a-f0-9]{64}$"
                                  },
                                  "encoding": {
                                    "type": "string",
                                    "const": "f32le-interleaved"
                                  },
                                  "sampleRate": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 384000
                                  },
                                  "channels": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 32
                                  },
                                  "frames": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 9007199254740991
                                  }
                                },
                                "required": [
                                  "sha256",
                                  "encoding",
                                  "sampleRate",
                                  "channels",
                                  "frames"
                                ],
                                "additionalProperties": false
                              },
                              "kind": {
                                "type": "string",
                                "const": "job_artifact"
                              },
                              "jobId": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 120
                              },
                              "artifactId": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 120
                              }
                            },
                            "required": [
                              "contentType",
                              "bytes",
                              "sha256",
                              "pcm",
                              "kind",
                              "jobId",
                              "artifactId"
                            ],
                            "additionalProperties": false
                          }
                        ]
                      },
                      "stems": {
                        "minItems": 1,
                        "maxItems": 4,
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "vocals",
                            "drums",
                            "bass",
                            "other"
                          ]
                        }
                      }
                    },
                    "required": [
                      "type",
                      "source",
                      "stems"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "const": "transcribe_speech"
                      },
                      "modelId": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 120
                      },
                      "source": {
                        "anyOf": [
                          {
                            "type": "object",
                            "properties": {
                              "contentType": {
                                "type": "string",
                                "enum": [
                                  "audio/wav",
                                  "audio/flac",
                                  "audio/mpeg",
                                  "audio/ogg"
                                ]
                              },
                              "bytes": {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 536870912
                              },
                              "sha256": {
                                "type": "string",
                                "pattern": "^[a-f0-9]{64}$"
                              },
                              "pcm": {
                                "type": "object",
                                "properties": {
                                  "sha256": {
                                    "type": "string",
                                    "pattern": "^[a-f0-9]{64}$"
                                  },
                                  "encoding": {
                                    "type": "string",
                                    "const": "f32le-interleaved"
                                  },
                                  "sampleRate": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 384000
                                  },
                                  "channels": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 32
                                  },
                                  "frames": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 9007199254740991
                                  }
                                },
                                "required": [
                                  "sha256",
                                  "encoding",
                                  "sampleRate",
                                  "channels",
                                  "frames"
                                ],
                                "additionalProperties": false
                              },
                              "kind": {
                                "type": "string",
                                "const": "creator_asset"
                              },
                              "assetId": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 120
                              }
                            },
                            "required": [
                              "contentType",
                              "bytes",
                              "sha256",
                              "pcm",
                              "kind",
                              "assetId"
                            ],
                            "additionalProperties": false
                          },
                          {
                            "type": "object",
                            "properties": {
                              "contentType": {
                                "type": "string",
                                "enum": [
                                  "audio/wav",
                                  "audio/flac",
                                  "audio/mpeg",
                                  "audio/ogg"
                                ]
                              },
                              "bytes": {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 536870912
                              },
                              "sha256": {
                                "type": "string",
                                "pattern": "^[a-f0-9]{64}$"
                              },
                              "pcm": {
                                "type": "object",
                                "properties": {
                                  "sha256": {
                                    "type": "string",
                                    "pattern": "^[a-f0-9]{64}$"
                                  },
                                  "encoding": {
                                    "type": "string",
                                    "const": "f32le-interleaved"
                                  },
                                  "sampleRate": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 384000
                                  },
                                  "channels": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 32
                                  },
                                  "frames": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 9007199254740991
                                  }
                                },
                                "required": [
                                  "sha256",
                                  "encoding",
                                  "sampleRate",
                                  "channels",
                                  "frames"
                                ],
                                "additionalProperties": false
                              },
                              "kind": {
                                "type": "string",
                                "const": "job_artifact"
                              },
                              "jobId": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 120
                              },
                              "artifactId": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 120
                              }
                            },
                            "required": [
                              "contentType",
                              "bytes",
                              "sha256",
                              "pcm",
                              "kind",
                              "jobId",
                              "artifactId"
                            ],
                            "additionalProperties": false
                          }
                        ]
                      },
                      "language": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 120
                      },
                      "timestamps": {
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "type",
                      "source"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "const": "transcribe_audio_to_midi"
                      },
                      "modelId": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 120
                      },
                      "source": {
                        "anyOf": [
                          {
                            "type": "object",
                            "properties": {
                              "contentType": {
                                "type": "string",
                                "enum": [
                                  "audio/wav",
                                  "audio/flac",
                                  "audio/mpeg",
                                  "audio/ogg"
                                ]
                              },
                              "bytes": {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 536870912
                              },
                              "sha256": {
                                "type": "string",
                                "pattern": "^[a-f0-9]{64}$"
                              },
                              "pcm": {
                                "type": "object",
                                "properties": {
                                  "sha256": {
                                    "type": "string",
                                    "pattern": "^[a-f0-9]{64}$"
                                  },
                                  "encoding": {
                                    "type": "string",
                                    "const": "f32le-interleaved"
                                  },
                                  "sampleRate": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 384000
                                  },
                                  "channels": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 32
                                  },
                                  "frames": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 9007199254740991
                                  }
                                },
                                "required": [
                                  "sha256",
                                  "encoding",
                                  "sampleRate",
                                  "channels",
                                  "frames"
                                ],
                                "additionalProperties": false
                              },
                              "kind": {
                                "type": "string",
                                "const": "creator_asset"
                              },
                              "assetId": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 120
                              }
                            },
                            "required": [
                              "contentType",
                              "bytes",
                              "sha256",
                              "pcm",
                              "kind",
                              "assetId"
                            ],
                            "additionalProperties": false
                          },
                          {
                            "type": "object",
                            "properties": {
                              "contentType": {
                                "type": "string",
                                "enum": [
                                  "audio/wav",
                                  "audio/flac",
                                  "audio/mpeg",
                                  "audio/ogg"
                                ]
                              },
                              "bytes": {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 536870912
                              },
                              "sha256": {
                                "type": "string",
                                "pattern": "^[a-f0-9]{64}$"
                              },
                              "pcm": {
                                "type": "object",
                                "properties": {
                                  "sha256": {
                                    "type": "string",
                                    "pattern": "^[a-f0-9]{64}$"
                                  },
                                  "encoding": {
                                    "type": "string",
                                    "const": "f32le-interleaved"
                                  },
                                  "sampleRate": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 384000
                                  },
                                  "channels": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 32
                                  },
                                  "frames": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 9007199254740991
                                  }
                                },
                                "required": [
                                  "sha256",
                                  "encoding",
                                  "sampleRate",
                                  "channels",
                                  "frames"
                                ],
                                "additionalProperties": false
                              },
                              "kind": {
                                "type": "string",
                                "const": "job_artifact"
                              },
                              "jobId": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 120
                              },
                              "artifactId": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 120
                              }
                            },
                            "required": [
                              "contentType",
                              "bytes",
                              "sha256",
                              "pcm",
                              "kind",
                              "jobId",
                              "artifactId"
                            ],
                            "additionalProperties": false
                          }
                        ]
                      },
                      "mode": {
                        "type": "string",
                        "enum": [
                          "monophonic",
                          "polyphonic"
                        ]
                      }
                    },
                    "required": [
                      "type",
                      "source",
                      "mode"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "const": "transcribe_audio_to_midi"
                      },
                      "modelId": {
                        "type": "string",
                        "const": "inverse-drum-machine/idm-44-train-kits"
                      },
                      "source": {
                        "anyOf": [
                          {
                            "type": "object",
                            "properties": {
                              "contentType": {
                                "type": "string",
                                "enum": [
                                  "audio/wav",
                                  "audio/flac",
                                  "audio/mpeg",
                                  "audio/ogg"
                                ]
                              },
                              "bytes": {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 536870912
                              },
                              "sha256": {
                                "type": "string",
                                "pattern": "^[a-f0-9]{64}$"
                              },
                              "pcm": {
                                "type": "object",
                                "properties": {
                                  "sha256": {
                                    "type": "string",
                                    "pattern": "^[a-f0-9]{64}$"
                                  },
                                  "encoding": {
                                    "type": "string",
                                    "const": "f32le-interleaved"
                                  },
                                  "sampleRate": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 384000
                                  },
                                  "channels": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 32
                                  },
                                  "frames": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 9007199254740991
                                  }
                                },
                                "required": [
                                  "sha256",
                                  "encoding",
                                  "sampleRate",
                                  "channels",
                                  "frames"
                                ],
                                "additionalProperties": false
                              },
                              "kind": {
                                "type": "string",
                                "const": "creator_asset"
                              },
                              "assetId": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 120
                              }
                            },
                            "required": [
                              "contentType",
                              "bytes",
                              "sha256",
                              "pcm",
                              "kind",
                              "assetId"
                            ],
                            "additionalProperties": false
                          },
                          {
                            "type": "object",
                            "properties": {
                              "contentType": {
                                "type": "string",
                                "enum": [
                                  "audio/wav",
                                  "audio/flac",
                                  "audio/mpeg",
                                  "audio/ogg"
                                ]
                              },
                              "bytes": {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 536870912
                              },
                              "sha256": {
                                "type": "string",
                                "pattern": "^[a-f0-9]{64}$"
                              },
                              "pcm": {
                                "type": "object",
                                "properties": {
                                  "sha256": {
                                    "type": "string",
                                    "pattern": "^[a-f0-9]{64}$"
                                  },
                                  "encoding": {
                                    "type": "string",
                                    "const": "f32le-interleaved"
                                  },
                                  "sampleRate": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 384000
                                  },
                                  "channels": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 32
                                  },
                                  "frames": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 9007199254740991
                                  }
                                },
                                "required": [
                                  "sha256",
                                  "encoding",
                                  "sampleRate",
                                  "channels",
                                  "frames"
                                ],
                                "additionalProperties": false
                              },
                              "kind": {
                                "type": "string",
                                "const": "job_artifact"
                              },
                              "jobId": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 120
                              },
                              "artifactId": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 120
                              }
                            },
                            "required": [
                              "contentType",
                              "bytes",
                              "sha256",
                              "pcm",
                              "kind",
                              "jobId",
                              "artifactId"
                            ],
                            "additionalProperties": false
                          }
                        ]
                      },
                      "mode": {
                        "type": "string",
                        "const": "drums"
                      }
                    },
                    "required": [
                      "type",
                      "modelId",
                      "source",
                      "mode"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "const": "analyze_audio"
                      },
                      "modelId": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 120
                      },
                      "source": {
                        "anyOf": [
                          {
                            "type": "object",
                            "properties": {
                              "contentType": {
                                "type": "string",
                                "enum": [
                                  "audio/wav",
                                  "audio/flac",
                                  "audio/mpeg",
                                  "audio/ogg"
                                ]
                              },
                              "bytes": {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 536870912
                              },
                              "sha256": {
                                "type": "string",
                                "pattern": "^[a-f0-9]{64}$"
                              },
                              "pcm": {
                                "type": "object",
                                "properties": {
                                  "sha256": {
                                    "type": "string",
                                    "pattern": "^[a-f0-9]{64}$"
                                  },
                                  "encoding": {
                                    "type": "string",
                                    "const": "f32le-interleaved"
                                  },
                                  "sampleRate": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 384000
                                  },
                                  "channels": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 32
                                  },
                                  "frames": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 9007199254740991
                                  }
                                },
                                "required": [
                                  "sha256",
                                  "encoding",
                                  "sampleRate",
                                  "channels",
                                  "frames"
                                ],
                                "additionalProperties": false
                              },
                              "kind": {
                                "type": "string",
                                "const": "creator_asset"
                              },
                              "assetId": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 120
                              }
                            },
                            "required": [
                              "contentType",
                              "bytes",
                              "sha256",
                              "pcm",
                              "kind",
                              "assetId"
                            ],
                            "additionalProperties": false
                          },
                          {
                            "type": "object",
                            "properties": {
                              "contentType": {
                                "type": "string",
                                "enum": [
                                  "audio/wav",
                                  "audio/flac",
                                  "audio/mpeg",
                                  "audio/ogg"
                                ]
                              },
                              "bytes": {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 536870912
                              },
                              "sha256": {
                                "type": "string",
                                "pattern": "^[a-f0-9]{64}$"
                              },
                              "pcm": {
                                "type": "object",
                                "properties": {
                                  "sha256": {
                                    "type": "string",
                                    "pattern": "^[a-f0-9]{64}$"
                                  },
                                  "encoding": {
                                    "type": "string",
                                    "const": "f32le-interleaved"
                                  },
                                  "sampleRate": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 384000
                                  },
                                  "channels": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 32
                                  },
                                  "frames": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 9007199254740991
                                  }
                                },
                                "required": [
                                  "sha256",
                                  "encoding",
                                  "sampleRate",
                                  "channels",
                                  "frames"
                                ],
                                "additionalProperties": false
                              },
                              "kind": {
                                "type": "string",
                                "const": "job_artifact"
                              },
                              "jobId": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 120
                              },
                              "artifactId": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 120
                              }
                            },
                            "required": [
                              "contentType",
                              "bytes",
                              "sha256",
                              "pcm",
                              "kind",
                              "jobId",
                              "artifactId"
                            ],
                            "additionalProperties": false
                          }
                        ]
                      },
                      "analyses": {
                        "minItems": 1,
                        "maxItems": 9,
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "quality",
                            "waveform",
                            "loudness",
                            "pitch",
                            "tempo",
                            "key",
                            "loop",
                            "role",
                            "rhythm"
                          ]
                        }
                      }
                    },
                    "required": [
                      "type",
                      "source",
                      "analyses"
                    ],
                    "additionalProperties": false
                  }
                ]
              },
              "persistence": {
                "type": "object",
                "properties": {
                  "mode": {
                    "type": "string",
                    "const": "artifact_only"
                  }
                },
                "required": [
                  "mode"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "schema",
              "task",
              "persistence"
            ],
            "additionalProperties": false,
            "x-maru-typescript": "import(\"@maruaudio/infer-contract/audio-jobs\").InferAudioJobSubmission"
          }
        },
        "required": [
          "submission"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "const": "job"
          },
          "schema": {
            "type": "string",
            "const": "maru-audio-job/v1"
          },
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "taskType": {
            "type": "string",
            "enum": [
              "generate_audio",
              "separate_audio_stems",
              "transcribe_speech",
              "transcribe_audio_to_midi",
              "analyze_audio"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "claimed",
              "running",
              "uploading",
              "done",
              "error",
              "cancelled"
            ]
          },
          "attempt": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "lastSequence": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "artifactCount": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "retention": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "mode": {
                    "type": "string",
                    "const": "artifact_only"
                  },
                  "expiresAt": {
                    "type": "string"
                  }
                },
                "required": [
                  "mode",
                  "expiresAt"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "mode": {
                    "type": "string",
                    "const": "account_sample"
                  },
                  "sampleId": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 120
                  }
                },
                "required": [
                  "mode",
                  "sampleId"
                ],
                "additionalProperties": false
              }
            ]
          },
          "outcome": {
            "type": "object",
            "properties": {
              "outcome": {
                "type": "string",
                "enum": [
                  "applicable",
                  "no_notes",
                  "no_speech",
                  "not_applicable",
                  "uncertain"
                ]
              },
              "reason": {
                "type": "string",
                "maxLength": 500
              }
            },
            "required": [
              "outcome"
            ],
            "additionalProperties": false
          },
          "error": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              },
              "message": {
                "type": "string",
                "maxLength": 500
              },
              "retryable": {
                "type": "boolean"
              }
            },
            "required": [
              "code",
              "message",
              "retryable"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "kind",
          "schema",
          "id",
          "taskType",
          "status",
          "attempt",
          "lastSequence",
          "artifactCount",
          "retention"
        ],
        "additionalProperties": false,
        "x-maru-typescript": "import(\"@maruaudio/infer-contract/audio-jobs\").InferAudioJobHandle"
      }
    },
    {
      "name": "maru_get_audio_job",
      "title": "Read an owned audio job and artifact descriptors",
      "description": "Read status and immutable artifact descriptors for an owned audio job. Use this handle to follow a submission before downloading its results.",
      "permission": "mcp:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120,
            "pattern": "^[A-Za-z0-9][A-Za-z0-9._:~/-]*$"
          }
        },
        "required": [
          "jobId"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "handle": {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "const": "job"
              },
              "schema": {
                "type": "string",
                "const": "maru-audio-job/v1"
              },
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              },
              "taskType": {
                "type": "string",
                "enum": [
                  "generate_audio",
                  "separate_audio_stems",
                  "transcribe_speech",
                  "transcribe_audio_to_midi",
                  "analyze_audio"
                ]
              },
              "status": {
                "type": "string",
                "enum": [
                  "pending",
                  "claimed",
                  "running",
                  "uploading",
                  "done",
                  "error",
                  "cancelled"
                ]
              },
              "attempt": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "lastSequence": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "artifactCount": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "retention": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "mode": {
                        "type": "string",
                        "const": "artifact_only"
                      },
                      "expiresAt": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "mode",
                      "expiresAt"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "mode": {
                        "type": "string",
                        "const": "account_sample"
                      },
                      "sampleId": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 120
                      }
                    },
                    "required": [
                      "mode",
                      "sampleId"
                    ],
                    "additionalProperties": false
                  }
                ]
              },
              "outcome": {
                "type": "object",
                "properties": {
                  "outcome": {
                    "type": "string",
                    "enum": [
                      "applicable",
                      "no_notes",
                      "no_speech",
                      "not_applicable",
                      "uncertain"
                    ]
                  },
                  "reason": {
                    "type": "string",
                    "maxLength": 500
                  }
                },
                "required": [
                  "outcome"
                ],
                "additionalProperties": false
              },
              "error": {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 120
                  },
                  "message": {
                    "type": "string",
                    "maxLength": 500
                  },
                  "retryable": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "code",
                  "message",
                  "retryable"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "kind",
              "schema",
              "id",
              "taskType",
              "status",
              "attempt",
              "lastSequence",
              "artifactCount",
              "retention"
            ],
            "additionalProperties": false
          },
          "artifacts": {
            "maxItems": 64,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "schema": {
                  "type": "string",
                  "const": "maru-audio-artifact/v1"
                },
                "artifactId": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 120
                },
                "jobId": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 120
                },
                "role": {
                  "type": "string",
                  "enum": [
                    "audio_variant",
                    "audio_stem",
                    "transcript",
                    "midi",
                    "midi_evidence",
                    "pitch_trajectory",
                    "analysis",
                    "receipt",
                    "embedding"
                  ]
                },
                "contentType": {
                  "type": "string"
                },
                "sha256": {
                  "type": "string",
                  "pattern": "^[a-f0-9]{64}$"
                },
                "bytes": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 9007199254740991
                },
                "pcm": {
                  "type": "object",
                  "properties": {
                    "sha256": {
                      "type": "string",
                      "pattern": "^[a-f0-9]{64}$"
                    },
                    "encoding": {
                      "type": "string",
                      "const": "f32le-interleaved"
                    },
                    "sampleRate": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 384000
                    },
                    "channels": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 32
                    },
                    "frames": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 9007199254740991
                    }
                  },
                  "required": [
                    "sha256",
                    "encoding",
                    "sampleRate",
                    "channels",
                    "frames"
                  ],
                  "additionalProperties": false
                },
                "provenance": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": {}
                }
              },
              "required": [
                "schema",
                "artifactId",
                "jobId",
                "role",
                "contentType",
                "sha256",
                "bytes",
                "provenance"
              ],
              "additionalProperties": {}
            }
          }
        },
        "required": [
          "handle",
          "artifacts"
        ],
        "additionalProperties": false,
        "x-maru-typescript": "import(\"@maruaudio/infer-contract/audio-jobs\").InferAudioJobDetail"
      }
    },
    {
      "name": "maru_list_audio_jobs",
      "title": "List owned audio jobs",
      "description": "Page through your owned audio jobs, including task type and status. Use the returned cursor to continue browsing prior submissions.",
      "permission": "mcp:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          },
          "cursor": {
            "type": "string",
            "minLength": 1,
            "maxLength": 500
          }
        },
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "items": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "kind": {
                  "type": "string",
                  "const": "job"
                },
                "schema": {
                  "type": "string",
                  "const": "maru-audio-job/v1"
                },
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 120
                },
                "taskType": {
                  "type": "string",
                  "enum": [
                    "generate_audio",
                    "separate_audio_stems",
                    "transcribe_speech",
                    "transcribe_audio_to_midi",
                    "analyze_audio"
                  ]
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "pending",
                    "claimed",
                    "running",
                    "uploading",
                    "done",
                    "error",
                    "cancelled"
                  ]
                },
                "attempt": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9007199254740991
                },
                "lastSequence": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9007199254740991
                },
                "artifactCount": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9007199254740991
                },
                "retention": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "mode": {
                          "type": "string",
                          "const": "artifact_only"
                        },
                        "expiresAt": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "mode",
                        "expiresAt"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "mode": {
                          "type": "string",
                          "const": "account_sample"
                        },
                        "sampleId": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 120
                        }
                      },
                      "required": [
                        "mode",
                        "sampleId"
                      ],
                      "additionalProperties": false
                    }
                  ]
                },
                "outcome": {
                  "type": "object",
                  "properties": {
                    "outcome": {
                      "type": "string",
                      "enum": [
                        "applicable",
                        "no_notes",
                        "no_speech",
                        "not_applicable",
                        "uncertain"
                      ]
                    },
                    "reason": {
                      "type": "string",
                      "maxLength": 500
                    }
                  },
                  "required": [
                    "outcome"
                  ],
                  "additionalProperties": false
                },
                "error": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 120
                    },
                    "message": {
                      "type": "string",
                      "maxLength": 500
                    },
                    "retryable": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "additionalProperties": false
                }
              },
              "required": [
                "kind",
                "schema",
                "id",
                "taskType",
                "status",
                "attempt",
                "lastSequence",
                "artifactCount",
                "retention"
              ],
              "additionalProperties": false
            }
          },
          "nextCursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items",
          "nextCursor"
        ],
        "additionalProperties": false,
        "x-maru-typescript": "import(\"@maruaudio/infer-contract/audio-jobs\").InferAudioJobList"
      }
    },
    {
      "name": "maru_cancel_audio_job",
      "title": "Cancel an owned audio task job",
      "description": "Request cancellation of an owned audio job without submitting another render or spending new credits. Read the job again to follow its final status.",
      "permission": "mcp:generate",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120,
            "pattern": "^[A-Za-z0-9][A-Za-z0-9._:~/-]*$"
          }
        },
        "required": [
          "jobId"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "const": "job"
          },
          "schema": {
            "type": "string",
            "const": "maru-audio-job/v1"
          },
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "taskType": {
            "type": "string",
            "enum": [
              "generate_audio",
              "separate_audio_stems",
              "transcribe_speech",
              "transcribe_audio_to_midi",
              "analyze_audio"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "claimed",
              "running",
              "uploading",
              "done",
              "error",
              "cancelled"
            ]
          },
          "attempt": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "lastSequence": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "artifactCount": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "retention": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "mode": {
                    "type": "string",
                    "const": "artifact_only"
                  },
                  "expiresAt": {
                    "type": "string"
                  }
                },
                "required": [
                  "mode",
                  "expiresAt"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "mode": {
                    "type": "string",
                    "const": "account_sample"
                  },
                  "sampleId": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 120
                  }
                },
                "required": [
                  "mode",
                  "sampleId"
                ],
                "additionalProperties": false
              }
            ]
          },
          "outcome": {
            "type": "object",
            "properties": {
              "outcome": {
                "type": "string",
                "enum": [
                  "applicable",
                  "no_notes",
                  "no_speech",
                  "not_applicable",
                  "uncertain"
                ]
              },
              "reason": {
                "type": "string",
                "maxLength": 500
              }
            },
            "required": [
              "outcome"
            ],
            "additionalProperties": false
          },
          "error": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              },
              "message": {
                "type": "string",
                "maxLength": 500
              },
              "retryable": {
                "type": "boolean"
              }
            },
            "required": [
              "code",
              "message",
              "retryable"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "kind",
          "schema",
          "id",
          "taskType",
          "status",
          "attempt",
          "lastSequence",
          "artifactCount",
          "retention"
        ],
        "additionalProperties": false,
        "x-maru-typescript": "import(\"@maruaudio/infer-contract/audio-jobs\").InferAudioJobHandle"
      }
    },
    {
      "name": "maru_retry_audio_job",
      "title": "Retry an owned audio task job",
      "description": "Recheck source, model and credit admission before retrying the frozen task. Reuse requestKey for an exact retry replay.",
      "permission": "mcp:generate",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false
      },
      "_meta": {
        "maruaudio.com/execution": "job"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120,
            "pattern": "^[A-Za-z0-9][A-Za-z0-9._:~/-]*$"
          },
          "requestKey": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120,
            "pattern": "^[A-Za-z0-9][A-Za-z0-9._:~/-]*$"
          }
        },
        "required": [
          "jobId",
          "requestKey"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "const": "job"
          },
          "schema": {
            "type": "string",
            "const": "maru-audio-job/v1"
          },
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "taskType": {
            "type": "string",
            "enum": [
              "generate_audio",
              "separate_audio_stems",
              "transcribe_speech",
              "transcribe_audio_to_midi",
              "analyze_audio"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "claimed",
              "running",
              "uploading",
              "done",
              "error",
              "cancelled"
            ]
          },
          "attempt": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "lastSequence": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "artifactCount": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "retention": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "mode": {
                    "type": "string",
                    "const": "artifact_only"
                  },
                  "expiresAt": {
                    "type": "string"
                  }
                },
                "required": [
                  "mode",
                  "expiresAt"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "mode": {
                    "type": "string",
                    "const": "account_sample"
                  },
                  "sampleId": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 120
                  }
                },
                "required": [
                  "mode",
                  "sampleId"
                ],
                "additionalProperties": false
              }
            ]
          },
          "outcome": {
            "type": "object",
            "properties": {
              "outcome": {
                "type": "string",
                "enum": [
                  "applicable",
                  "no_notes",
                  "no_speech",
                  "not_applicable",
                  "uncertain"
                ]
              },
              "reason": {
                "type": "string",
                "maxLength": 500
              }
            },
            "required": [
              "outcome"
            ],
            "additionalProperties": false
          },
          "error": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              },
              "message": {
                "type": "string",
                "maxLength": 500
              },
              "retryable": {
                "type": "boolean"
              }
            },
            "required": [
              "code",
              "message",
              "retryable"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "kind",
          "schema",
          "id",
          "taskType",
          "status",
          "attempt",
          "lastSequence",
          "artifactCount",
          "retention"
        ],
        "additionalProperties": false,
        "x-maru-typescript": "import(\"@maruaudio/infer-contract/audio-jobs\").InferAudioJobHandle"
      }
    },
    {
      "name": "maru_prepare_audio_source",
      "title": "Admit an owned uploaded WAV or FLAC as an immutable source",
      "description": "Normalize and verify an already finalized owned creator asset. Returns exact encoded and decoded PCM identities for task submission. Upload bytes using the authenticated upload transport first.",
      "permission": "mcp:generate",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "assetId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120,
            "pattern": "^[A-Za-z0-9][A-Za-z0-9._:~/-]*$"
          }
        },
        "required": [
          "assetId"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "type": "object",
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "contentType": {
                "type": "string",
                "enum": [
                  "audio/wav",
                  "audio/flac",
                  "audio/mpeg",
                  "audio/ogg"
                ]
              },
              "bytes": {
                "type": "integer",
                "minimum": 1,
                "maximum": 536870912
              },
              "sha256": {
                "type": "string",
                "pattern": "^[a-f0-9]{64}$"
              },
              "pcm": {
                "type": "object",
                "properties": {
                  "sha256": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{64}$"
                  },
                  "encoding": {
                    "type": "string",
                    "const": "f32le-interleaved"
                  },
                  "sampleRate": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 384000
                  },
                  "channels": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 32
                  },
                  "frames": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 9007199254740991
                  }
                },
                "required": [
                  "sha256",
                  "encoding",
                  "sampleRate",
                  "channels",
                  "frames"
                ],
                "additionalProperties": false
              },
              "kind": {
                "type": "string",
                "const": "creator_asset"
              },
              "assetId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              }
            },
            "required": [
              "contentType",
              "bytes",
              "sha256",
              "pcm",
              "kind",
              "assetId"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "contentType": {
                "type": "string",
                "enum": [
                  "audio/wav",
                  "audio/flac",
                  "audio/mpeg",
                  "audio/ogg"
                ]
              },
              "bytes": {
                "type": "integer",
                "minimum": 1,
                "maximum": 536870912
              },
              "sha256": {
                "type": "string",
                "pattern": "^[a-f0-9]{64}$"
              },
              "pcm": {
                "type": "object",
                "properties": {
                  "sha256": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{64}$"
                  },
                  "encoding": {
                    "type": "string",
                    "const": "f32le-interleaved"
                  },
                  "sampleRate": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 384000
                  },
                  "channels": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 32
                  },
                  "frames": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 9007199254740991
                  }
                },
                "required": [
                  "sha256",
                  "encoding",
                  "sampleRate",
                  "channels",
                  "frames"
                ],
                "additionalProperties": false
              },
              "kind": {
                "type": "string",
                "const": "job_artifact"
              },
              "jobId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              },
              "artifactId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              }
            },
            "required": [
              "contentType",
              "bytes",
              "sha256",
              "pcm",
              "kind",
              "jobId",
              "artifactId"
            ],
            "additionalProperties": false
          }
        ],
        "x-maru-typescript": "import(\"@maruaudio/infer-contract/audio-jobs\").InferAudioSource"
      }
    },
    {
      "name": "maru_get_audio_artifact",
      "title": "Read owned audio job artifact metadata and authenticated download path",
      "description": "Read owned audio job artifact metadata and authenticated download path",
      "permission": "mcp:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120,
            "pattern": "^[A-Za-z0-9][A-Za-z0-9._:~/-]*$"
          },
          "artifactId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120,
            "pattern": "^[A-Za-z0-9][A-Za-z0-9._:~/-]*$"
          }
        },
        "required": [
          "jobId",
          "artifactId"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "artifact": {
            "type": "object",
            "properties": {
              "schema": {
                "type": "string",
                "const": "maru-audio-artifact/v1"
              },
              "artifactId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              },
              "jobId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              },
              "role": {
                "type": "string",
                "enum": [
                  "audio_variant",
                  "audio_stem",
                  "transcript",
                  "midi",
                  "midi_evidence",
                  "pitch_trajectory",
                  "analysis",
                  "receipt",
                  "embedding"
                ]
              },
              "contentType": {
                "type": "string"
              },
              "sha256": {
                "type": "string",
                "pattern": "^[a-f0-9]{64}$"
              },
              "bytes": {
                "type": "integer",
                "minimum": 1,
                "maximum": 9007199254740991
              },
              "pcm": {
                "type": "object",
                "properties": {
                  "sha256": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{64}$"
                  },
                  "encoding": {
                    "type": "string",
                    "const": "f32le-interleaved"
                  },
                  "sampleRate": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 384000
                  },
                  "channels": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 32
                  },
                  "frames": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 9007199254740991
                  }
                },
                "required": [
                  "sha256",
                  "encoding",
                  "sampleRate",
                  "channels",
                  "frames"
                ],
                "additionalProperties": false
              },
              "provenance": {
                "type": "object",
                "properties": {},
                "additionalProperties": {}
              }
            },
            "required": [
              "schema",
              "artifactId",
              "jobId",
              "role",
              "contentType",
              "sha256",
              "bytes",
              "provenance"
            ],
            "additionalProperties": {}
          },
          "expiresAt": {
            "type": "string"
          },
          "downloadUrl": {
            "type": "string"
          }
        },
        "required": [
          "artifact",
          "expiresAt",
          "downloadUrl"
        ],
        "additionalProperties": false,
        "x-maru-typescript": "import(\"@maruaudio/infer-contract/audio-jobs\").InferAudioArtifactDetail"
      }
    },
    {
      "name": "maru_list_audio_capabilities",
      "title": "Inspect hosted audio task and model availability",
      "description": "Inspect current hosted task and model availability before submitting audio work. An unavailable capability must not be replaced with another model silently.",
      "permission": "mcp:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "tasks": {
            "maxItems": 5,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "taskType": {
                  "type": "string",
                  "enum": [
                    "generate_audio",
                    "separate_audio_stems",
                    "transcribe_speech",
                    "transcribe_audio_to_midi",
                    "analyze_audio"
                  ]
                },
                "available": {
                  "type": "boolean"
                },
                "reason": {
                  "type": "string"
                },
                "modelIds": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 120
                  }
                }
              },
              "required": [
                "taskType",
                "available",
                "modelIds"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "tasks"
        ],
        "additionalProperties": false,
        "x-maru-typescript": "import(\"@maruaudio/infer-contract/audio-jobs\").InferAudioCapabilities"
      }
    },
    {
      "name": "maru_get_audio_job_by_request_key",
      "title": "Recover an owned audio job after a lost submission response",
      "description": "Look up an owned audio job by its retained request key after a lost submission response, without starting or charging for another render.",
      "permission": "mcp:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "requestKey": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120,
            "pattern": "^[A-Za-z0-9][A-Za-z0-9._:~/-]*$"
          }
        },
        "required": [
          "requestKey"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "maru_get_audio_job_events",
      "title": "Replay persisted audio job events after a sequence",
      "description": "Read persisted events for an owned audio job after the last saved sequence number. Retain the sequence to resume polling without losing progress.",
      "permission": "mcp:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120,
            "pattern": "^[A-Za-z0-9][A-Za-z0-9._:~/-]*$"
          },
          "after": {
            "default": 0,
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "jobId"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "items": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": {}
            }
          },
          "lastSequence": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "items",
          "lastSequence"
        ],
        "additionalProperties": false,
        "x-maru-typescript": "import(\"@maruaudio/infer-contract/audio-jobs\").InferAudioJobEvents"
      }
    },
    {
      "name": "maru_list_guides",
      "title": "List the operating guides",
      "description": "List every guide's name, one-line summary and trigger (the distributed CLI lists only public cards). Read the ones whose trigger matches the task with read_guide.",
      "permission": "mcp:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {}
      }
    },
    {
      "name": "maru_read_guide",
      "title": "Read focused Studio operating guides",
      "description": "Load the complete text of one or more guides named in the system prompt's guide catalog. Use this before acting when a guide's trigger matches the request. Reading several related guides in one call (up to 5) avoids extra turns.",
      "permission": "mcp:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "names": {
            "minItems": 1,
            "maxItems": 5,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "processor-authoring",
                "restricted-typescript",
                "dsp-leaf-catalog",
                "parameters-and-schema",
                "ui-kit-faces",
                "face-from-reference",
                "presets-and-state",
                "assets-and-resources",
                "midi-and-event-modules",
                "build-preview-export",
                "graph-authoring",
                "platform-overview",
                "porting-web-audio",
                "cli-and-operations",
                "sample-kits-and-banks",
                "generation-and-transcription",
                "module-authoring"
              ]
            },
            "description": "Guide names copied exactly from the system prompt catalog."
          }
        },
        "required": [
          "names"
        ]
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "guides": {
            "readOnly": true,
            "type": "array",
            "items": {
              "readOnly": true,
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "summary": {
                  "type": "string"
                },
                "trigger": {
                  "type": "string"
                },
                "content": {
                  "type": "string"
                },
                "audience": {
                  "type": "string",
                  "enum": [
                    "public",
                    "workspace"
                  ],
                  "description": "`workspace` cards describe this checkout's own processes."
                }
              },
              "required": [
                "name",
                "summary",
                "trigger",
                "content",
                "audience"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "guides"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "maru_list_studio_templates",
      "title": "List Studio project templates",
      "description": "Look up the exact templates offered by the Studio create screen. In an unscoped Studio chat the system prompt already carries this roster, so you do NOT need this call to choose a template — call create_studio_project directly with a key from the roster. Call this when the roster is not in front of you, or with present:true when the user asked to SEE or choose from the templates themselves. Do not recite the list to the user. Each entry carries its key, human name, project kind and whether it can seed working source.",
      "permission": "mcp:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "effect",
              "instrument",
              "sampler",
              "sequencer"
            ]
          },
          "present": {
            "description": "true ONLY when the user asked to see or choose from the templates themselves; the list then renders as a picker card. Omit it when you will choose the template yourself: the list is then your own lookup and is not shown.",
            "type": "boolean"
          }
        }
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "readOnly": true,
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "const": "studio-template-choices"
          },
          "requestedKind": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "effect",
                  "instrument",
                  "sampler",
                  "sequencer"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "presented": {
            "type": "boolean",
            "description": "Whether the listing was asked for on the user's behalf (renders as a picker)."
          },
          "templates": {
            "readOnly": true,
            "type": "array",
            "items": {
              "readOnly": true,
              "type": "object",
              "properties": {
                "key": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                },
                "projectKind": {
                  "type": "string",
                  "enum": [
                    "effect",
                    "instrument",
                    "sampler",
                    "sequencer"
                  ]
                },
                "source": {
                  "type": "string",
                  "enum": [
                    "blank",
                    "source-pack"
                  ]
                },
                "seeds": {
                  "type": "boolean",
                  "description": "False when Studio shows the entry but cannot seed working source."
                },
                "choice": {
                  "anyOf": [
                    {
                      "readOnly": true,
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "send-message"
                        },
                        "label": {
                          "type": "string"
                        },
                        "prompt": {
                          "type": "string"
                        },
                        "templateKey": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "kind",
                        "label",
                        "prompt",
                        "templateKey"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "key",
                "name",
                "description",
                "projectKind",
                "source",
                "seeds",
                "choice"
              ],
              "additionalProperties": false
            }
          },
          "browse": {
            "readOnly": true,
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "const": "open-url"
              },
              "label": {
                "type": "string",
                "const": "Browse modules"
              },
              "href": {
                "type": "string"
              }
            },
            "required": [
              "kind",
              "label",
              "href"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "kind",
          "requestedKind",
          "presented",
          "templates",
          "browse"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "maru_create_studio_project",
      "title": "Create a Studio project from a template",
      "description": "Create a project owned by the current user from one exact Studio template. The result renders a visible project card with an \"Open in Studio\" button. In a Studio chat with nothing attached, creating a project also attaches it to the conversation, so its source and preset tools are available from the next turn; the result says which happened.",
      "permission": "mcp:write",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "templateKey": {
            "type": "string",
            "minLength": 1,
            "maxLength": 160
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "brief": {
            "type": "string",
            "minLength": 1,
            "maxLength": 4000
          }
        },
        "required": [
          "templateKey"
        ]
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "entityKind": {
            "type": "string",
            "const": "project"
          },
          "id": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "projectKind": {
            "type": "string",
            "enum": [
              "effect",
              "instrument",
              "sampler",
              "sequencer"
            ]
          },
          "templateKey": {
            "type": "string"
          },
          "seeded": {
            "type": "boolean"
          },
          "templateName": {
            "description": "The template's human name, when the host resolved one.",
            "type": "string"
          },
          "attachedToConversation": {
            "description": "True when creating the project also attached it to the host conversation (next turn).",
            "type": "boolean"
          },
          "editableThisTurn": {
            "description": "True when the host bound the new project's workspace into this turn.",
            "type": "boolean"
          }
        },
        "required": [
          "entityKind",
          "id",
          "slug",
          "title",
          "projectKind",
          "templateKey",
          "seeded"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "maru_create_sound_bank",
      "title": "Create a MIDI sound bank",
      "description": "Create an empty MIDI sound bank owned by the current user. The result renders as a card that opens its Clips editor, where MIDI files can be added. In a Studio chat with nothing attached, creating a bank also attaches it to the conversation, so its clip tools are available from the next turn; the result says which happened.",
      "permission": "mcp:write",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "description": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2000
          }
        },
        "required": [
          "title"
        ]
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "entityKind": {
            "type": "string",
            "const": "sound-bank"
          },
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "attachedToConversation": {
            "type": "boolean"
          }
        },
        "required": [
          "entityKind",
          "id",
          "title",
          "description"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "maru_list_studio_projects",
      "title": "List my Studio projects",
      "description": "List the current user's own Studio projects, most recently changed first: id, slug, title, project kind, status, visibility, last change and a link that opens it in Studio. Use it when the user asks about their projects or names one you need to find. Never state a project that is not in this result. Where the module source tools are available, pass the slug as their `module`.",
      "permission": "mcp:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "effect",
              "instrument",
              "sampler",
              "sequencer"
            ]
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50
          }
        }
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "total": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "projects": {
            "readOnly": true,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "slug": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "projectKind": {
                  "type": "string"
                },
                "status": {
                  "type": "string"
                },
                "visibility": {
                  "type": "string"
                },
                "updatedAt": {
                  "type": "string",
                  "description": "ISO timestamp of the last change."
                },
                "studioUrl": {
                  "type": "string",
                  "description": "Absolute URL that opens the project in Studio."
                }
              },
              "required": [
                "id",
                "slug",
                "title",
                "projectKind",
                "status",
                "visibility",
                "updatedAt",
                "studioUrl"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "total",
          "projects"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "maru_search_community_modules",
      "title": "Search published community modules",
      "description": "Search the public directory of modules other Maru creators published: title, kind, roles, price, license, remix count and a link to its page. Use it to find examples to learn from (\"a published granular instrument\", \"tape delays\") or to answer what already exists. Pass owner and slug from a row to list_community_module_files and read_community_module_source. Never state a module that is not in this result.",
      "permission": "mcp:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "query": {
            "description": "Free text over titles and descriptions.",
            "type": "string",
            "maxLength": 120
          },
          "kind": {
            "description": "Only modules of this kind.",
            "type": "string",
            "enum": [
              "instrument",
              "effect",
              "generator",
              "midi",
              "control"
            ]
          },
          "sort": {
            "description": "newest published (default), recently updated, or most remixed.",
            "type": "string",
            "enum": [
              "newest",
              "updated",
              "remixed"
            ]
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 25
          }
        }
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "modules": {
            "readOnly": true,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "owner": {
                  "type": "string",
                  "description": "Owner id; with slug, how the other community verbs name the module."
                },
                "slug": {
                  "type": "string"
                },
                "moduleId": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "description": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "moduleKind": {
                  "type": "string"
                },
                "roles": {
                  "readOnly": true,
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "priceCents": {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991
                },
                "license": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "remixCount": {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991
                },
                "publishedAt": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "ISO timestamp, or null for a module never published as a Release."
                },
                "url": {
                  "type": "string",
                  "description": "Absolute URL of the module's community page."
                }
              },
              "required": [
                "owner",
                "slug",
                "moduleId",
                "title",
                "description",
                "moduleKind",
                "roles",
                "priceCents",
                "license",
                "remixCount",
                "publishedAt",
                "url"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "modules"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "maru_list_community_module_files",
      "title": "List a published module's source files",
      "description": "List the source files of one published community module's current release, with sizes. Only modules whose source is open have files to list. Paths are the exact form read_community_module_source expects.",
      "permission": "mcp:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "owner": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The module's owner, exactly as search_community_modules reports it."
          },
          "slug": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "description": "The module's slug, exactly as search_community_modules reports it."
          }
        },
        "required": [
          "owner",
          "slug"
        ]
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "files": {
            "readOnly": true,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "path": {
                  "type": "string"
                },
                "bytes": {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991
                },
                "binary": {
                  "type": "boolean"
                }
              },
              "required": [
                "path",
                "bytes",
                "binary"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "title",
          "files"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "maru_read_community_module_source",
      "title": "Read a published module's source file",
      "description": "Read one source file of a published community module as a numbered window of at most 400 lines. The result states the window and the file's total; pass startLine/endLine (1-based, inclusive) to continue. The line numbers are display only. Use it to learn how another creator built something, and credit the module when you borrow an idea.",
      "permission": "mcp:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "owner": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "The module's owner, exactly as search_community_modules reports it."
          },
          "slug": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "description": "The module's slug, exactly as search_community_modules reports it."
          },
          "path": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "A path from list_community_module_files."
          },
          "startLine": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991
          },
          "endLine": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "owner",
          "slug",
          "path"
        ]
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "path": {
            "type": "string"
          },
          "start": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "end": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "total": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "lines": {
            "readOnly": true,
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "path",
          "start",
          "end",
          "total",
          "lines"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "maru_list_plugin_builds",
      "title": "List my plug-in builds and releases",
      "description": "List the current user's native plug-in build projects: each one's delivery state (building, installable, failed, buildable, web-only, unsupported), its latest released version, the state of each format and architecture, and a dashboard link where the user downloads it. Use it when the user asks whether a build finished, what they have released, or where to get the VST3/AU/CLAP. Pass a project's id to show_plugin_build for its build history and errors. Never state a build or version that is not in this result.",
      "permission": "mcp:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {}
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "projects": {
            "readOnly": true,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "slug": {
                  "type": "string"
                },
                "state": {
                  "type": "string",
                  "description": "web-only | buildable | building | installable | failed | unsupported"
                },
                "latestVersion": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "withdrawn": {
                  "type": "boolean"
                },
                "targets": {
                  "readOnly": true,
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "format": {
                        "type": "string"
                      },
                      "architecture": {
                        "type": "string"
                      },
                      "state": {
                        "type": "string",
                        "description": "web-only | buildable | building | installable | failed | unsupported"
                      },
                      "reason": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "format",
                      "architecture",
                      "state"
                    ],
                    "additionalProperties": false
                  }
                },
                "dashboardUrl": {
                  "type": "string",
                  "description": "Absolute dashboard URL where the user downloads and manages it."
                }
              },
              "required": [
                "id",
                "name",
                "slug",
                "state",
                "latestVersion",
                "withdrawn",
                "targets",
                "dashboardUrl"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "projects"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "maru_show_plugin_build",
      "title": "Show one plug-in build project's builds and releases",
      "description": "Show one of the current user's plug-in build projects: its recent builds (status, format/architecture, when queued and finished, and the error message of a failed build), its releases (version, withdrawn or not) and the delivery state of each format, with dashboard links to the project and each build. Take the project id from list_plugin_builds.",
      "permission": "mcp:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "project": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "description": "The build project's id, exactly as list_plugin_builds reports it."
          },
          "limit": {
            "description": "Recent builds to include (default 10).",
            "type": "integer",
            "minimum": 1,
            "maximum": 25
          }
        },
        "required": [
          "project"
        ]
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "state": {
            "type": "string",
            "description": "web-only | buildable | building | installable | failed | unsupported"
          },
          "latestVersion": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "withdrawn": {
            "type": "boolean"
          },
          "targets": {
            "readOnly": true,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "format": {
                  "type": "string"
                },
                "architecture": {
                  "type": "string"
                },
                "state": {
                  "type": "string",
                  "description": "web-only | buildable | building | installable | failed | unsupported"
                },
                "reason": {
                  "type": "string"
                }
              },
              "required": [
                "format",
                "architecture",
                "state"
              ],
              "additionalProperties": false
            }
          },
          "dashboardUrl": {
            "type": "string",
            "description": "Absolute dashboard URL where the user downloads and manages it."
          },
          "builds": {
            "readOnly": true,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "status": {
                  "type": "string"
                },
                "target": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "\"vst3/arm64\" when the build is bound to one target."
                },
                "queuedAt": {
                  "type": "string"
                },
                "finishedAt": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "error": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "url": {
                  "type": "string"
                }
              },
              "required": [
                "id",
                "status",
                "target",
                "queuedAt",
                "finishedAt",
                "error",
                "url"
              ],
              "additionalProperties": false
            }
          },
          "releases": {
            "readOnly": true,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "version": {
                  "type": "string"
                },
                "withdrawn": {
                  "type": "boolean"
                },
                "createdAt": {
                  "type": "string"
                }
              },
              "required": [
                "version",
                "withdrawn",
                "createdAt"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "id",
          "name",
          "slug",
          "state",
          "latestVersion",
          "withdrawn",
          "targets",
          "dashboardUrl",
          "builds",
          "releases"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "maru_library_resolve",
      "title": "Resolve a module or sampler bank reference",
      "description": "Resolve one Maru library reference — @handle/slug[@version], owner/slug, a user.<owner>.<slug> module id or a pasted maruaudio.com link — to the live published module or sampler bank it names: its kind, which Maru host loads it (Maru Instrument, Maru FX, Maru MIDI or Maru Sampler), the live and pinned version, price, licence, this account's entitlement, its page and its download. Use it before installing, loading or remixing something by name, and to print the canonical @handle/slug@version reference. Never state an item, price or version that is not in this result.",
      "permission": "mcp:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "reference": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2048,
            "description": "What to resolve: @handle/slug, @handle/slug@3 (publication) or @handle/slug@1.2.0 (declared semver), owner/slug, a user.<owner>.<slug> module id, an optional kind prefix (module:, bank:), or a pasted maruaudio.com module or sampler bank link."
          },
          "version": {
            "description": "Pin a publication number (the same as @<n> in the reference).",
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "reference"
        ]
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "reference": {
            "type": "string",
            "description": "The canonical reference of the live publication, @handle/slug@<n>."
          },
          "kind": {
            "type": "string",
            "enum": [
              "module",
              "bank"
            ]
          },
          "id": {
            "type": "string",
            "description": "owner/slug, the stable public identity."
          },
          "owner": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "handle": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "id",
              "name",
              "handle"
            ],
            "additionalProperties": false
          },
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "hosts": {
            "readOnly": true,
            "description": "The Maru hosts that load it; empty when none can.",
            "type": "array",
            "items": {
              "type": "string",
              "description": "instrument | effect | midi | sampler"
            }
          },
          "version": {
            "type": "object",
            "properties": {
              "publication": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991,
                "description": "The live publication number every locator carries."
              },
              "declared": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "The module's declared semver; null for a bank."
              }
            },
            "required": [
              "publication",
              "declared"
            ],
            "additionalProperties": false
          },
          "pinned": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              },
              {
                "type": "null"
              }
            ],
            "description": "The publication the reference pinned, confirmed live."
          },
          "matched": {
            "type": "string",
            "enum": [
              "url",
              "id",
              "module-id"
            ]
          },
          "entitlement": {
            "type": "string",
            "description": "free | owner | entitled | purchase-required | not-released"
          },
          "access": {
            "type": "string",
            "enum": [
              "free",
              "paid",
              "none"
            ]
          },
          "priceCents": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "license": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "pageUrl": {
            "type": "string"
          },
          "favorite": {
            "type": "boolean"
          },
          "download": {
            "type": "object",
            "properties": {
              "allowed": {
                "type": "boolean"
              },
              "reason": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "url": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "format": {
                "type": "string",
                "enum": [
                  "module-dist-zip",
                  "sampler-bank-zip"
                ]
              },
              "auth": {
                "type": "string",
                "enum": [
                  "bearer",
                  "session"
                ],
                "description": "bearer: the account token; session: a browser sign-in."
              }
            },
            "required": [
              "allowed",
              "reason",
              "url",
              "format",
              "auth"
            ],
            "additionalProperties": false
          },
          "module": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "moduleId": {
                    "type": "string"
                  },
                  "moduleKind": {
                    "type": "string"
                  },
                  "programs": {
                    "readOnly": true,
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "roles": {
                    "readOnly": true,
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "required": [
                  "moduleId",
                  "moduleKind",
                  "programs",
                  "roles"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "bank": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "bankId": {
                    "type": "string"
                  },
                  "bankKind": {
                    "type": "string",
                    "enum": [
                      "keyboard",
                      "drum-kit"
                    ]
                  },
                  "defaultPositioningId": {
                    "type": "string"
                  },
                  "manifestSha256": {
                    "type": "string"
                  }
                },
                "required": [
                  "bankId",
                  "bankKind",
                  "defaultPositioningId",
                  "manifestSha256"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "reference",
          "kind",
          "id",
          "owner",
          "slug",
          "title",
          "hosts",
          "version",
          "pinned",
          "matched",
          "entitlement",
          "access",
          "priceCents",
          "license",
          "pageUrl",
          "favorite",
          "download",
          "module",
          "bank"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "maru_library_favorite",
      "title": "Save or unsave a module or sampler bank",
      "description": "Save one published module or sampler bank to the signed-in account's favorites by reference (@handle/slug, owner/slug, a module id or a maruaudio.com link), or remove it with remove: true. Saved items appear in the Maru plug-ins' library and on the website. Setting the state it already has is a no-op, so a retry is safe.",
      "permission": "mcp:write",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "reference": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2048,
            "description": "What to resolve: @handle/slug, @handle/slug@3 (publication) or @handle/slug@1.2.0 (declared semver), owner/slug, a user.<owner>.<slug> module id, an optional kind prefix (module:, bank:), or a pasted maruaudio.com module or sampler bank link."
          },
          "remove": {
            "description": "Remove the save instead of adding it.",
            "type": "boolean"
          }
        },
        "required": [
          "reference"
        ]
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "reference": {
            "type": "string"
          },
          "kind": {
            "type": "string",
            "enum": [
              "module",
              "bank"
            ]
          },
          "id": {
            "type": "string"
          },
          "favorite": {
            "type": "boolean"
          }
        },
        "required": [
          "reference",
          "kind",
          "id",
          "favorite"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "maru_remix",
      "title": "Remix (fork) a module or sampler bank into your account",
      "description": "Remix one published Maru module or sampler bank — named by @handle/slug, owner/slug, a user.<owner>.<slug> module id or a pasted maruaudio.com link — into a new project in the signed-in account, exactly like the Remix button on its page. The new project records its lineage (\"remixed from\"), starts from the parent's published revision, and inherits no price, cover or licence; the result states the parent's licence line. A licence that forbids derivatives, or a paid item this account has not bought, is refused with a one-line reason. Returns the remix's @handle/slug, its Studio link and its text files.",
      "permission": "mcp:write",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "reference": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2048,
            "description": "What to remix: @handle/slug, owner/slug, a user.<owner>.<slug> module id, an optional kind prefix (module:, bank:), or a pasted maruaudio.com module or sampler bank link."
          },
          "slug": {
            "description": "The remix's slug in your account; defaults to the parent's title plus \"copy\".",
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9-]{0,62}$"
          }
        },
        "required": [
          "reference"
        ]
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "reference": {
            "type": "string",
            "description": "The remix's own reference, @handle/slug. It becomes loadable once published (`maru publish`)."
          },
          "kind": {
            "type": "string",
            "enum": [
              "module",
              "bank"
            ]
          },
          "projectId": {
            "type": "string"
          },
          "owner": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "handle": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "id",
              "handle"
            ],
            "additionalProperties": false
          },
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "visibility": {
            "type": "string"
          },
          "studioUrl": {
            "type": "string",
            "description": "Absolute URL that opens the remix in Studio."
          },
          "parent": {
            "type": "object",
            "properties": {
              "reference": {
                "type": "string",
                "description": "The parent's reference, @handle/slug."
              },
              "title": {
                "type": "string"
              },
              "owner": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "handle": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "name",
                  "handle"
                ],
                "additionalProperties": false
              },
              "license": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "The parent's licence id; null when its creator stated none."
              },
              "licenseLine": {
                "type": "string",
                "description": "The parent's licence as people read it; the remix shows it as its lineage."
              },
              "revision": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991,
                "description": "The parent revision the remix began from."
              },
              "publication": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "A bank's live publication the remix copied; null for a module."
              },
              "pageUrl": {
                "type": "string"
              }
            },
            "required": [
              "reference",
              "title",
              "owner",
              "license",
              "licenseLine",
              "revision",
              "publication",
              "pageUrl"
            ],
            "additionalProperties": false
          },
          "files": {
            "readOnly": true,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "path": {
                  "type": "string",
                  "description": "Project-relative path."
                },
                "bytes": {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991
                },
                "sha256": {
                  "type": "string"
                },
                "content": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "The UTF-8 text body; null for a binary body, which stays online (open the project in Studio)."
                }
              },
              "required": [
                "path",
                "bytes",
                "sha256",
                "content"
              ],
              "additionalProperties": false
            }
          },
          "assets": {
            "readOnly": true,
            "description": "A bank's samples and artwork, copied into the remix online.",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "path": {
                  "type": "string",
                  "description": "How the bank names it: assets/<id> for a sample, Images/… for artwork."
                },
                "filename": {
                  "type": "string"
                },
                "bytes": {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991
                },
                "sha256": {
                  "type": "string"
                },
                "mime": {
                  "type": "string"
                },
                "kind": {
                  "type": "string",
                  "enum": [
                    "sample",
                    "artwork"
                  ]
                }
              },
              "required": [
                "path",
                "filename",
                "bytes",
                "sha256",
                "mime",
                "kind"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "reference",
          "kind",
          "projectId",
          "owner",
          "slug",
          "title",
          "visibility",
          "studioUrl",
          "parent",
          "files",
          "assets"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "maru_list_dsp_nodes",
      "title": "List the compiled DSP node catalog",
      "description": "List every DSP node type the compiled engine provides — name, engine node id, channel counts and parameter names. These are the primitives a module graph can be composed from; a node that is not listed is not available.",
      "permission": "mcp:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "stereoOnly": {
            "description": "Only nodes that can process stereo.",
            "type": "boolean"
          }
        }
      }
    },
    {
      "name": "maru_list_effects",
      "title": "List the named effects available to chain",
      "description": "List the named effects the shared MultiFX chain offers, grouped by family (modulation, drive, filter, dynamics, delay, reverb). Check this before writing new DSP: the effect you want may already exist and only need to be chained, reordered or given its own controls. Names only; read a module's source through the module and community tools.",
      "permission": "mcp:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "family": {
            "description": "Only effects in this family.",
            "type": "string",
            "enum": [
              "modulation",
              "drive",
              "filter",
              "dynamics",
              "delay",
              "reverb"
            ]
          }
        }
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "count": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "families": {
            "readOnly": true,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "family": {
                  "type": "string",
                  "enum": [
                    "modulation",
                    "drive",
                    "filter",
                    "dynamics",
                    "delay",
                    "reverb"
                  ]
                },
                "count": {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991
                },
                "effects": {
                  "readOnly": true,
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "required": [
                "family",
                "count",
                "effects"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "count",
          "families"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "maru_list_module_files",
      "title": "List the source files in a module workspace",
      "description": "List the files inside one module project, with sizes. Paths are relative to the module root and are the exact form the other workspace verbs expect. Narrow with `subdir` or with `glob` (e.g. 'src/ui/**/*.tsx'). Generated directories (build, dist, node_modules) and symlinks are not listed. To find WHERE something is written, use search_module_source rather than listing and reading files one by one.",
      "permission": "mcp:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "module": {
            "description": "Which module workspace to act on. OMIT IT in a project chat or in the Studio app: the attached project is the only module there, and this call already acts on it. On the CLI or over MCP, where many modules are reachable, pass the slug reported by list_examples. Only registered module projects are reachable.",
            "type": "string",
            "minLength": 1
          },
          "subdir": {
            "description": "Limit the listing to one subdirectory, e.g. 'src'.",
            "type": "string"
          },
          "glob": {
            "description": "Limit to paths matching this glob, e.g. 'src/ui/**' or '**/*.{ts,tsx}'. Supports *, ?, ** and {a,b}; matched against the path relative to the module root.",
            "type": "string"
          }
        }
      }
    },
    {
      "name": "maru_read_module_source",
      "title": "Read a window of one source file from a module workspace",
      "description": "Read a file from a module project as a numbered WINDOW. The result states the window and the file's true total, e.g. 'lines 1-400 of 1210'. A window is at most 400 lines and 20000 characters and always ends on a line boundary; when more remains, the result names the exact call that continues it. Use startLine/endLine (1-based, inclusive) to read a specific region — after a search, read around the line the search reported rather than the whole file. THE LINE NUMBERS AND THE TAB AFTER THEM ARE DISPLAY ONLY: never include them in oldText, newText or content.",
      "permission": "mcp:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "module": {
            "description": "Which module workspace to act on. OMIT IT in a project chat or in the Studio app: the attached project is the only module there, and this call already acts on it. On the CLI or over MCP, where many modules are reachable, pass the slug reported by list_examples. Only registered module projects are reachable.",
            "type": "string",
            "minLength": 1
          },
          "path": {
            "type": "string",
            "minLength": 1,
            "description": "Path RELATIVE to the module root, e.g. 'src/module.ts'. Absolute paths and '..' segments are rejected."
          },
          "startLine": {
            "description": "First line to return, 1-based and inclusive. Defaults to 1.",
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991
          },
          "endLine": {
            "description": "Last line to return, 1-based and inclusive. The window ceilings still apply, so a large range comes back in several calls.",
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "path"
        ]
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "path": {
            "type": "string"
          },
          "content": {
            "type": "string",
            "description": "The raw text of the window. No numbers, no header — those are display."
          },
          "startLine": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "endLine": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "totalLines": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "bytes": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991,
            "description": "Size of the whole file."
          },
          "truncated": {
            "type": "boolean",
            "description": "True when the window is not the whole file."
          }
        },
        "required": [
          "path",
          "content",
          "startLine",
          "endLine",
          "totalLines",
          "bytes",
          "truncated"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "maru_search_module_source",
      "title": "Search a module workspace for a string or pattern",
      "description": "Find WHERE something is written, across a module project's text files, without reading them. Literal by default; pass regex: true for a JavaScript regular expression. Narrow with glob (e.g. 'src/ui/**'), widen the view with contextLines. Results are printed exactly as grep prints them — 'path:line:text' for a hit and 'path-line-text' for context — so the text, indentation included, starts right after the second separator and can be copied into edit_module_source as it is. Grouped by file, with the total. A search with many hits shows a few per file and names the files holding the rest, so narrow with glob or a more specific pattern rather than raising maxResults. Binary files are skipped. Use this before reading: a search plus a targeted read_module_source window costs a fraction of reading whole files to look for a string.",
      "permission": "mcp:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "module": {
            "description": "Which module workspace to act on. OMIT IT in a project chat or in the Studio app: the attached project is the only module there, and this call already acts on it. On the CLI or over MCP, where many modules are reachable, pass the slug reported by list_examples. Only registered module projects are reachable.",
            "type": "string",
            "minLength": 1
          },
          "pattern": {
            "type": "string",
            "minLength": 1,
            "maxLength": 300,
            "description": "The text (or regular expression) to find."
          },
          "regex": {
            "description": "Treat the pattern as a JavaScript regular expression.",
            "type": "boolean"
          },
          "ignoreCase": {
            "description": "Match case-insensitively.",
            "type": "boolean"
          },
          "glob": {
            "description": "Limit to paths matching this glob, e.g. 'src/ui/**' or '**/*.{ts,tsx}'. Supports *, ?, ** and {a,b}; matched against the path relative to the module root.",
            "type": "string"
          },
          "contextLines": {
            "description": "Lines of context to show on each side of a match.",
            "type": "integer",
            "minimum": 0,
            "maximum": 5
          },
          "maxResults": {
            "description": "Cap on reported matches. Default 30; the total is always stated, so a capped search says how much it did not show.",
            "type": "integer",
            "minimum": 1,
            "maximum": 200
          }
        },
        "required": [
          "pattern"
        ]
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "matches": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "path": {
                  "type": "string"
                },
                "line": {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991
                },
                "text": {
                  "type": "string"
                },
                "before": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "after": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "required": [
                "path",
                "line",
                "text"
              ],
              "additionalProperties": false
            },
            "description": "The matches shown, bounded by maxResults and the text budget."
          },
          "totalMatches": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "filesSearched": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "filesMatched": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "truncated": {
            "type": "boolean"
          },
          "notShown": {
            "description": "Where the matches that were not shown are, so the next search can aim.",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "path": {
                  "type": "string"
                },
                "count": {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991
                }
              },
              "required": [
                "path",
                "count"
              ],
              "additionalProperties": false
            }
          },
          "contextDropped": {
            "description": "True when contextLines was given up so more hits fit.",
            "type": "boolean"
          }
        },
        "required": [
          "matches",
          "totalMatches",
          "filesSearched",
          "filesMatched",
          "truncated"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "maru_generate_audio",
      "title": "Generate one-shots or loops from a prompt (hosted)",
      "description": "Render seeded audio on the hosted service and return download URLs. One item per seed; pass seeds to reproduce a result, or variations for that many random seeds. Specialised children: generate_kit for a 16-pad drum kit, generate_instrument for a playable sampler instrument. Rendering can outlast the call: a result whose job is still queued names the job, and check_audio_generation collects it.",
      "permission": "mcp:generate",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false
      },
      "_meta": {
        "maruaudio.com/execution": "job"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2000,
            "description": "What to generate, in words"
          },
          "negativePrompt": {
            "description": "What to steer away from",
            "type": "string",
            "minLength": 1,
            "maxLength": 2000
          },
          "audioType": {
            "default": "one-shot",
            "type": "string",
            "enum": [
              "one-shot",
              "loop",
              "sfx"
            ]
          },
          "seconds": {
            "default": 2,
            "description": "Length of each item in seconds",
            "type": "number",
            "minimum": 0.25,
            "maximum": 60
          },
          "model": {
            "description": "Hosted model id; omit for the service default",
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "seeds": {
            "description": "Explicit seeds, one item each",
            "minItems": 1,
            "maxItems": 16,
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 0,
              "maximum": 4294967295
            }
          },
          "variations": {
            "default": 1,
            "description": "Random seeds to draw when seeds is absent",
            "type": "integer",
            "minimum": 1,
            "maximum": 16
          },
          "steps": {
            "type": "integer",
            "minimum": 1,
            "maximum": 500
          },
          "cfg": {
            "type": "number",
            "minimum": 0,
            "maximum": 30
          },
          "loraId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          }
        },
        "required": [
          "prompt"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "index": {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991
                },
                "seed": {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991
                },
                "wavUrl": {
                  "type": "string",
                  "description": "Download URL of the rendered WAV."
                },
                "durationSeconds": {
                  "type": "number"
                },
                "model": {
                  "type": "string"
                },
                "license": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              },
              "required": [
                "index",
                "seed",
                "wavUrl"
              ],
              "additionalProperties": false
            }
          },
          "itemErrors": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "index": {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991
                },
                "error": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ],
                  "additionalProperties": false
                }
              },
              "required": [
                "index",
                "error"
              ],
              "additionalProperties": false
            }
          },
          "job": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "status": {
                "type": "string",
                "enum": [
                  "queued",
                  "done",
                  "partial",
                  "failed",
                  "cancelled"
                ]
              }
            },
            "required": [
              "id",
              "status"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "items",
          "itemErrors"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "maru_generate_kit",
      "title": "Generate a 16-pad drum kit from a prompt (hosted)",
      "description": "Generate a drum kit on the hosted service: one pad per role of the 16-pad drum kit layout, as download URLs. The pads are saved to the user's Generated Sounds library. A child of generate_audio. Rendering can outlast the call: a result whose job is still queued names the job, and check_audio_generation collects it.",
      "permission": "mcp:generate",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false
      },
      "_meta": {
        "maruaudio.com/execution": "job"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2000,
            "description": "What to generate, in words"
          },
          "negativePrompt": {
            "description": "What to steer away from",
            "type": "string",
            "minLength": 1,
            "maxLength": 2000
          },
          "seed": {
            "description": "One seed for the whole kit; random when absent",
            "type": "integer",
            "minimum": 0,
            "maximum": 4294967295
          },
          "model": {
            "description": "Hosted model id; omit for the service default",
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "bankTitle": {
            "description": "Name for a sound bank of the pads; the hosted service does not create the bank yet and says so in the result note",
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          }
        },
        "required": [
          "prompt"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "kitId": {
            "type": "string"
          },
          "contract": {
            "type": "string",
            "description": "The pad contract, e.g. drum-kit-16."
          },
          "seed": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "model": {
            "type": "string"
          },
          "pads": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "index": {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991
                },
                "roleId": {
                  "type": "string"
                },
                "wavUrl": {
                  "type": "string"
                },
                "durationSeconds": {
                  "type": "number"
                },
                "note": {
                  "type": "string"
                }
              },
              "required": [
                "index",
                "roleId",
                "wavUrl"
              ],
              "additionalProperties": false
            }
          },
          "bankId": {
            "type": "string"
          },
          "note": {
            "type": "string"
          },
          "job": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "status": {
                "type": "string",
                "enum": [
                  "queued",
                  "done",
                  "partial",
                  "failed",
                  "cancelled"
                ]
              }
            },
            "required": [
              "id",
              "status"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "kitId",
          "contract",
          "seed",
          "pads"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "maru_check_audio_generation",
      "title": "Check a hosted audio generation that was still rendering",
      "description": "Read the state of a generate_audio or generate_kit job that returned before it finished: its status (queued, done, partial, failed) and every result rendered so far, with download URLs. Pass the job id exactly as the generation reported it. Call it again while the status is queued.",
      "permission": "mcp:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "job": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "description": "The job id a generation reported"
          }
        },
        "required": [
          "job"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "type": "object",
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "index": {
                      "type": "integer",
                      "minimum": -9007199254740991,
                      "maximum": 9007199254740991
                    },
                    "seed": {
                      "type": "integer",
                      "minimum": -9007199254740991,
                      "maximum": 9007199254740991
                    },
                    "wavUrl": {
                      "type": "string",
                      "description": "Download URL of the rendered WAV."
                    },
                    "durationSeconds": {
                      "type": "number"
                    },
                    "model": {
                      "type": "string"
                    },
                    "license": {
                      "type": "string"
                    },
                    "note": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "index",
                    "seed",
                    "wavUrl"
                  ],
                  "additionalProperties": false
                }
              },
              "itemErrors": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "index": {
                      "type": "integer",
                      "minimum": -9007199254740991,
                      "maximum": 9007199254740991
                    },
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "code",
                        "message"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "index",
                    "error"
                  ],
                  "additionalProperties": false
                }
              },
              "job": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "queued",
                      "done",
                      "partial",
                      "failed",
                      "cancelled"
                    ]
                  }
                },
                "required": [
                  "id",
                  "status"
                ],
                "additionalProperties": false
              },
              "kind": {
                "type": "string",
                "const": "audio"
              }
            },
            "required": [
              "items",
              "itemErrors",
              "kind"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "kitId": {
                "type": "string"
              },
              "contract": {
                "type": "string",
                "description": "The pad contract, e.g. drum-kit-16."
              },
              "seed": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              },
              "model": {
                "type": "string"
              },
              "pads": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "index": {
                      "type": "integer",
                      "minimum": -9007199254740991,
                      "maximum": 9007199254740991
                    },
                    "roleId": {
                      "type": "string"
                    },
                    "wavUrl": {
                      "type": "string"
                    },
                    "durationSeconds": {
                      "type": "number"
                    },
                    "note": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "index",
                    "roleId",
                    "wavUrl"
                  ],
                  "additionalProperties": false
                }
              },
              "bankId": {
                "type": "string"
              },
              "note": {
                "type": "string"
              },
              "job": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "queued",
                      "done",
                      "partial",
                      "failed",
                      "cancelled"
                    ]
                  }
                },
                "required": [
                  "id",
                  "status"
                ],
                "additionalProperties": false
              },
              "kind": {
                "type": "string",
                "const": "kit"
              }
            },
            "required": [
              "kitId",
              "contract",
              "seed",
              "pads",
              "kind"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    {
      "name": "maru_cancel_audio_generation",
      "title": "Cancel an owned hosted audio generation",
      "description": "Request cancellation of an existing generate_audio or generate_kit take. Requires generation permission, but submits no new model work and spends no new credits. Current queue-backed takes do not support cancellation yet and return an explicit error.",
      "permission": "mcp:generate",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true
      },
      "_meta": {
        "maruaudio.com/execution": "immediate"
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "job": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "description": "The exact generation job id reported by generate_audio or generate_kit"
          }
        },
        "required": [
          "job"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "queued",
              "done",
              "partial",
              "failed",
              "cancelled"
            ]
          }
        },
        "required": [
          "id",
          "status"
        ],
        "additionalProperties": false
      }
    }
  ]
}