[
{
"description": "Initialize a new Git repository",
"inputSchema": {
"properties": {
"path": {
"description": "Path to initialize the repository in. MUST be an absolute path (e.g., /Users/username/projects/my-repo)",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "init"
},
{
"description": "Clone a repository",
"inputSchema": {
"properties": {
"path": {
"description": "Path to clone into. MUST be an absolute path (e.g., /Users/username/projects/my-repo)",
"type": "string"
},
"url": {
"description": "URL of the repository to clone",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "clone"
},
{
"description": "Get repository status",
"inputSchema": {
"properties": {
"path": {
"description": "Path to repository. MUST be an absolute path (e.g., /Users/username/projects/my-repo)",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "status"
},
{
"description": "Stage files",
"inputSchema": {
"properties": {
"files": {
"description": "Files to stage",
"items": {
"description": "MUST be an absolute path (e.g., /Users/username/projects/my-repo/src/file.js)",
"type": "string"
},
"type": "array"
},
"path": {
"description": "Path to repository. MUST be an absolute path (e.g., /Users/username/projects/my-repo)",
"type": "string"
}
},
"required": [
"files"
],
"type": "object"
},
"name": "add"
},
{
"description": "Create a commit",
"inputSchema": {
"properties": {
"message": {
"description": "Commit message",
"type": "string"
},
"path": {
"description": "Path to repository. MUST be an absolute path (e.g., /Users/username/projects/my-repo)",
"type": "string"
}
},
"required": [
"message"
],
"type": "object"
},
"name": "commit"
},
{
"description": "Push commits to remote",
"inputSchema": {
"properties": {
"branch": {
"description": "Branch name",
"type": "string"
},
"force": {
"default": false,
"description": "Force push changes",
"type": "boolean"
},
"noVerify": {
"default": false,
"description": "Skip pre-push hooks",
"type": "boolean"
},
"path": {
"description": "Path to repository. MUST be an absolute path (e.g., /Users/username/projects/my-repo)",
"type": "string"
},
"remote": {
"default": "origin",
"description": "Remote name",
"type": "string"
},
"tags": {
"default": false,
"description": "Push all tags",
"type": "boolean"
}
},
"required": [
"branch"
],
"type": "object"
},
"name": "push"
},
{
"description": "Pull changes from remote",
"inputSchema": {
"properties": {
"branch": {
"description": "Branch name",
"type": "string"
},
"path": {
"description": "Path to repository. MUST be an absolute path (e.g., /Users/username/projects/my-repo)",
"type": "string"
},
"remote": {
"default": "origin",
"description": "Remote name",
"type": "string"
}
},
"required": [
"branch"
],
"type": "object"
},
"name": "pull"
},
{
"description": "List all branches",
"inputSchema": {
"properties": {
"path": {
"description": "Path to repository. MUST be an absolute path (e.g., /Users/username/projects/my-repo)",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "branch_list"
},
{
"description": "Create a new branch",
"inputSchema": {
"properties": {
"force": {
"default": false,
"description": "Force create branch even if it exists",
"type": "boolean"
},
"name": {
"description": "Branch name",
"type": "string"
},
"path": {
"description": "Path to repository. MUST be an absolute path (e.g., /Users/username/projects/my-repo)",
"type": "string"
},
"setUpstream": {
"default": false,
"description": "Set upstream for push/pull",
"type": "boolean"
},
"track": {
"default": true,
"description": "Set up tracking mode",
"type": "boolean"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "branch_create"
},
{
"description": "Delete a branch",
"inputSchema": {
"properties": {
"name": {
"description": "Branch name",
"type": "string"
},
"path": {
"description": "Path to repository. MUST be an absolute path (e.g., /Users/username/projects/my-repo)",
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "branch_delete"
},
{
"description": "Switch branches or restore working tree files",
"inputSchema": {
"properties": {
"path": {
"description": "Path to repository. MUST be an absolute path (e.g., /Users/username/projects/my-repo)",
"type": "string"
},
"target": {
"description": "Branch name, commit hash, or file path",
"type": "string"
}
},
"required": [
"target"
],
"type": "object"
},
"name": "checkout"
},
{
"description": "List tags",
"inputSchema": {
"properties": {
"path": {
"description": "Path to repository. MUST be an absolute path (e.g., /Users/username/projects/my-repo)",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "tag_list"
},
{
"description": "Create a tag",
"inputSchema": {
"properties": {
"annotated": {
"default": true,
"description": "Create an annotated tag",
"type": "boolean"
},
"force": {
"default": false,
"description": "Force create tag even if it exists",
"type": "boolean"
},
"message": {
"description": "Tag message",
"type": "string"
},
"name": {
"description": "Tag name",
"type": "string"
},
"path": {
"description": "Path to repository. MUST be an absolute path (e.g., /Users/username/projects/my-repo)",
"type": "string"
},
"sign": {
"default": false,
"description": "Create a signed tag",
"type": "boolean"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "tag_create"
},
{
"description": "Delete a tag",
"inputSchema": {
"properties": {
"name": {
"description": "Tag name",
"type": "string"
},
"path": {
"description": "Path to repository. MUST be an absolute path (e.g., /Users/username/projects/my-repo)",
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "tag_delete"
},
{
"description": "List remotes",
"inputSchema": {
"properties": {
"path": {
"description": "Path to repository. MUST be an absolute path (e.g., /Users/username/projects/my-repo)",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "remote_list"
},
{
"description": "Add a remote",
"inputSchema": {
"properties": {
"name": {
"description": "Remote name",
"type": "string"
},
"path": {
"description": "Path to repository. MUST be an absolute path (e.g., /Users/username/projects/my-repo)",
"type": "string"
},
"url": {
"description": "Remote URL",
"type": "string"
}
},
"required": [
"name",
"url"
],
"type": "object"
},
"name": "remote_add"
},
{
"description": "Remove a remote",
"inputSchema": {
"properties": {
"name": {
"description": "Remote name",
"type": "string"
},
"path": {
"description": "Path to repository. MUST be an absolute path (e.g., /Users/username/projects/my-repo)",
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "remote_remove"
},
{
"description": "List stashes",
"inputSchema": {
"properties": {
"path": {
"description": "Path to repository. MUST be an absolute path (e.g., /Users/username/projects/my-repo)",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "stash_list"
},
{
"description": "Save changes to stash",
"inputSchema": {
"properties": {
"all": {
"default": false,
"description": "Include ignored files",
"type": "boolean"
},
"includeUntracked": {
"default": false,
"description": "Include untracked files",
"type": "boolean"
},
"keepIndex": {
"default": false,
"description": "Keep staged changes",
"type": "boolean"
},
"message": {
"description": "Stash message",
"type": "string"
},
"path": {
"description": "Path to repository. MUST be an absolute path (e.g., /Users/username/projects/my-repo)",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "stash_save"
},
{
"description": "Apply and remove a stash",
"inputSchema": {
"properties": {
"index": {
"default": 0,
"description": "Stash index",
"type": "number"
},
"path": {
"description": "Path to repository. MUST be an absolute path (e.g., /Users/username/projects/my-repo)",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "stash_pop"
},
{
"description": "Execute multiple Git operations in sequence. This is the preferred way to execute multiple operations.",
"inputSchema": {
"properties": {
"actions": {
"description": "Array of Git operations to execute in sequence",
"items": {
"oneOf": [
{
"properties": {
"files": {
"description": "Files to stage. If not provided, stages all changes.",
"items": {
"description": "MUST be an absolute path (e.g., /Users/username/projects/my-repo/src/file.js)",
"type": "string"
},
"type": "array"
},
"type": {
"const": "stage"
}
},
"required": [
"type"
],
"type": "object"
},
{
"properties": {
"message": {
"description": "Commit message",
"type": "string"
},
"type": {
"const": "commit"
}
},
"required": [
"type",
"message"
],
"type": "object"
},
{
"properties": {
"branch": {
"description": "Branch name",
"type": "string"
},
"remote": {
"default": "origin",
"description": "Remote name",
"type": "string"
},
"type": {
"const": "push"
}
},
"required": [
"type",
"branch"
],
"type": "object"
}
],
"type": "object"
},
"minItems": 1,
"type": "array"
},
"path": {
"description": "Path to repository. MUST be an absolute path (e.g., /Users/username/projects/my-repo)",
"type": "string"
}
},
"required": [
"actions"
],
"type": "object"
},
"name": "bulk_action"
}
]