← MCP Security Catalog

Perforce P4 MCP Server 2026.3.2996147

pypi · p4mcp-server · latest release

Scan failed
Security result
15
Observed tools
48
Version rating
Change risk

Independent inventory

Observed 2026-08-21T19:07:07.730Z using mcpSecurity-inventory. Protocol 2025-06-18.

ToolCategoryRisk
modify_changelistsCreate/delete changelists, update changelists and organize files/jobs (WRITE permission)
Input schema
{
  "additionalProperties": false,
  "properties": {
    "action": {
      "description": "Changelist modification action: create makes new changelist, update modifies description, submit commits changes, delete removes changelist, move_files reorganizes files between changelists",
      "enum": [
        "create",
        "update",
        "submit",
        "delete",
        "move_files"
      ],
      "type": "string"
    },
    "changelist_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Changelist ID - required for most actions except create",
      "examples": [
        "12345"
      ]
    },
    "description": {
      "default": "",
      "description": "Changelist description - required for create, optional for update",
      "examples": [
        "Fix bug in authentication module",
        "Add new feature X"
      ],
      "type": "string"
    },
    "file_paths": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "File paths - required for move_files action",
      "examples": [
        [
          "//depot/projectX/file1.txt"
        ]
      ]
    }
  },
  "required": [
    "action"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
modify_filesAdd, edit, move, delete, revert, reconcile, resolve, and sync files (WRITE permission)
Input schema
{
  "additionalProperties": false,
  "properties": {
    "action": {
      "description": "File modification action",
      "enum": [
        "add",
        "edit",
        "delete",
        "move",
        "revert",
        "reconcile",
        "resolve",
        "sync"
      ],
      "type": "string"
    },
    "file_paths": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Full depot or client or local paths",
      "examples": [
        [
          "//depot/projectX/file1.txt",
          "//workspace_name/projectX/file2.txt"
        ]
      ]
    },
    "changelist": {
      "default": "default",
      "description": "Changelist ID or 'default'",
      "examples": [
        "default",
        "12345"
      ],
      "type": "string"
    },
    "source_paths": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Source paths - required for move action",
      "examples": [
        [
          "//depot/projectX/file1.txt"
        ]
      ]
    },
    "target_paths": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Target paths - required for move action",
      "examples": [
        [
          "//depot/projectX/file1_renamed.txt"
        ]
      ]
    },
    "mode": {
      "default": "auto",
      "description": "Resolve mode: auto(-am), safe(-as), force(-af), preview(-n), theirs(-at), yours(-ay)",
      "enum": [
        "auto",
        "safe",
        "force",
        "preview",
        "theirs",
        "yours"
      ],
      "type": "string"
    },
    "force": {
      "default": false,
      "description": "Force operation - use with caution",
      "type": "boolean"
    }
  },
  "required": [
    "action"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
modify_jobsLink or unlink jobs (WRITE permission)
Input schema
{
  "additionalProperties": false,
  "properties": {
    "action": {
      "description": "Job modification action: link_job associates job with changelist, unlink_job removes job association",
      "enum": [
        "link_job",
        "unlink_job"
      ],
      "type": "string"
    },
    "changelist_id": {
      "description": "Changelist ID - required for link_job/unlink_job",
      "examples": [
        "12345"
      ],
      "type": "string"
    },
    "job_id": {
      "description": "Job ID - required for link_job/unlink_job",
      "examples": [
        "job67890"
      ],
      "type": "string"
    }
  },
  "required": [
    "action",
    "changelist_id",
    "job_id"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
modify_reviewsCreate/update/delete reviews (WRITE permission)
Input schema
{
  "additionalProperties": false,
  "properties": {
    "action": {
      "description": "Review modification action. To delete/obliterate review, use 'obliterate' action which requires approval",
      "enum": [
        "create",
        "refresh_projects",
        "vote",
        "transition",
        "append_participants",
        "add_comment",
        "reply_comment",
        "append_change",
        "replace_with_change",
        "join",
        "archive_inactive",
        "mark_comment_read",
        "mark_comment_unread",
        "mark_all_comments_read",
        "mark_all_comments_unread",
        "update_author",
        "update_description",
        "replace_participants",
        "delete_participants",
        "leave",
        "obliterate"
      ],
      "type": "string"
    },
    "review_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Review ID (required for most actions except create, archive_inactive)",
      "examples": [
        12345
      ]
    },
    "change_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Changelist ID (required for create, append_change, replace_with_change)",
      "examples": [
        67890
      ]
    },
    "description": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Review description (optional on create)",
      "examples": [
        "Implement feature X"
      ]
    },
    "reviewers": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "List of reviewers",
      "examples": [
        [
          "alice",
          "bob"
        ]
      ]
    },
    "required_reviewers": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "List of required reviewers",
      "examples": [
        [
          "carol"
        ]
      ]
    },
    "reviewer_group_names": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "List of reviewer group names",
      "examples": [
        [
          "Developers",
          "QA"
        ]
      ]
    },
    "reviewer_groups_required": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "List of required reviewer groups",
      "examples": [
        [
          "Architects"
        ]
      ]
    },
    "comment_file_path": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "File path for inline comment",
      "examples": [
        "//depot/file.txt"
      ]
    },
    "comment_left_line": {
      "anyOf": [
        {
          "minimum": 1,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Left diff line number for inline comment",
      "examples": [
        40
      ]
    },
    "comment_right_line": {
      "anyOf": [
        {
          "minimum": 1,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Right diff line number for inline comment",
      "examples": [
        42
      ]
    },
    "comment_version": {
      "anyOf": [
        {
          "minimum": 1,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Review version for comment attachment",
      "examples": [
        1
      ]
    },
    "vote_value": {
      "anyOf": [
        {
          "enum": [
            "up",
            "down",
            "clear"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Vote value"
    },
    "version": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Review version (optional for vote)",
      "examples": [
        2
      ]
    },
    "transition": {
      "anyOf": [
        {
          "enum": [
            "needsRevision",
            "needsReview",
            "approved",
            "committed",
            "approved:commit",
            "rejected",
            "archived"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Transition target state"
    },
    "jobs": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Associated job IDs for transition",
      "examples": [
        [
          "job000123",
          "job000456"
        ]
      ]
    },
    "fix_status": {
      "anyOf": [
        {
          "enum": [
            "open",
            "closed"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Job fix status when transitioning"
    },
    "cleanup": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Perform cleanup for approved:commit/committed transitions"
    },
    "participant_user_names": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "List of participant usernames",
      "examples": [
        [
          "alice",
          "bob"
        ]
      ]
    },
    "participant_users_required": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "List of required participant usernames",
      "examples": [
        [
          "carol"
        ]
      ]
    },
    "participant_group_names": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "List of participant group names",
      "examples": [
        [
          "dev-team"
        ]
      ]
    },
    "participant_groups_required": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "List of required participant groups",
      "examples": [
        [
          "security-team"
        ]
      ]
    },
    "body": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Comment body (required for add_comment, reply_comment)",
      "examples": [
        "Looks good."
      ]
    },
    "task_state": {
      "anyOf": [
        {
          "enum": [
            "open",
            "comment"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Task state"
    },
    "notify": {
      "anyOf": [
        {
          "enum": [
            "immediate",
            "delayed"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Notification mode"
    },
    "comment_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Parent comment ID (reply_comment, mark_comment_read/unread)",
      "examples": [
        987
      ]
    },
    "not_updated_since": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "ISO date (YYYY-MM-DD) threshold for archive_inactive",
      "examples": [
        "2024-01-15"
      ]
    },
    "max_reviews": {
      "default": 0,
      "description": "Maximum number of inactive reviews to archive (0 = no limit)",
      "type": "integer"
    },
    "new_author": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "New author username (update_author)",
      "examples": [
        "dave"
      ]
    },
    "new_description": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "New review description (update_description)",
      "examples": [
        "Refined implementation details."
      ]
    }
  },
  "required": [
    "action"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
modify_shelvesCreate/delete, update shelves and unshelve files (WRITE permission)
Input schema
{
  "additionalProperties": false,
  "properties": {
    "action": {
      "description": "Shelve modification action: shelve stores files to shelf, unshelve restores files from shelf, update modifies shelved files, delete removes shelf, unshelve_to_changelist restores to specific changelist",
      "enum": [
        "shelve",
        "unshelve",
        "update",
        "delete",
        "unshelve_to_changelist"
      ],
      "type": "string"
    },
    "changelist_id": {
      "description": "Changelist ID",
      "examples": [
        "12345"
      ],
      "type": "string"
    },
    "file_paths": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "File paths for shelve/unshelve/update/delete",
      "examples": [
        [
          "//depot/projectX/file1.txt"
        ]
      ]
    },
    "target_changelist": {
      "default": "default",
      "description": "Target changelist for unshelve operations",
      "examples": [
        "default",
        "54321"
      ],
      "type": "string"
    },
    "force": {
      "default": false,
      "description": "Force operation - use with caution",
      "type": "boolean"
    }
  },
  "required": [
    "action",
    "changelist_id"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
modify_streamsCreate/update/delete streams, edit/resolve/revert/shelve stream specs, copy/merge/integrate/populate between streams, switch workspace, create stream workspace (WRITE permission)
Input schema
{
  "additionalProperties": false,
  "properties": {
    "action": {
      "description": "Stream modification action: 'create'/'update'/'delete' a stream, 'edit_spec'/'resolve_spec'/'revert_spec'/'shelve_spec'/'unshelve_spec' for spec editing, 'copy'/'merge'/'integrate'/'populate' for propagation, 'switch' workspace stream, 'create_workspace' for a stream",
      "enum": [
        "create",
        "update",
        "delete",
        "edit_spec",
        "resolve_spec",
        "revert_spec",
        "shelve_spec",
        "unshelve_spec",
        "copy",
        "merge",
        "integrate",
        "populate",
        "switch",
        "create_workspace"
      ],
      "type": "string"
    },
    "stream_name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Stream depot path (e.g. '//depot/main'). Also used as -S flag for propagation.",
      "examples": [
        "//depot/main",
        "//depot/dev"
      ]
    },
    "stream_type": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Stream type (required for create): mainline, development, sparsedev, release, sparserel, task, virtual",
      "examples": [
        "mainline",
        "development",
        "release",
        "task"
      ]
    },
    "parent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Parent stream (required for non-mainline create)",
      "examples": [
        "//depot/main"
      ]
    },
    "name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Short display name for the stream",
      "examples": [
        "Main",
        "Dev Branch"
      ]
    },
    "description": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Stream or workspace description",
      "examples": [
        "Main development stream",
        "Feature branch for project X"
      ]
    },
    "options": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Stream options: 'allsubmit/ownersubmit unlocked/locked toparent/notoparent fromparent/nofromparent'",
      "examples": [
        "allsubmit unlocked toparent fromparent",
        "ownersubmit locked notoparent nofromparent"
      ]
    },
    "parent_view": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Parent view treatment: 'inherit' or 'noinherit'",
      "examples": [
        "inherit",
        "noinherit"
      ]
    },
    "paths": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Stream view paths (e.g. ['share ...', 'isolate dir/...'])",
      "examples": [
        [
          "share ...",
          "isolate dir/..."
        ]
      ]
    },
    "remapped": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Remapped paths",
      "examples": [
        [
          "src/... new_src/..."
        ]
      ]
    },
    "ignored": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Ignored paths",
      "examples": [
        [
          "build/...",
          "tmp/..."
        ]
      ]
    },
    "changelist": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Changelist for edit_spec, shelve_spec, unshelve_spec, or propagation, 'default' not allowed for edit_spec/shelve_spec/unshelve_spec",
      "examples": [
        "12345"
      ]
    },
    "resolve_mode": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Resolve mode for resolve_spec: 'auto', 'accept_theirs', 'accept_yours'",
      "examples": [
        "auto",
        "accept_theirs",
        "accept_yours"
      ]
    },
    "target_changelist": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Target changelist for unshelve_spec",
      "examples": [
        "12345"
      ]
    },
    "parent_stream": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Override parent stream for propagation (-P flag)",
      "examples": [
        "//depot/main",
        "//depot/release"
      ]
    },
    "branch": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Branch spec name for integrate/populate (-b flag)",
      "examples": [
        "my_branch_spec"
      ]
    },
    "file_paths": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "File paths for propagation",
      "examples": [
        [
          "//depot/dev/...",
          "//depot/dev/src/file.txt"
        ]
      ]
    },
    "preview": {
      "default": false,
      "description": "Preview only, don't make changes (-n flag)",
      "type": "boolean"
    },
    "force": {
      "default": false,
      "description": "Force operation",
      "type": "boolean"
    },
    "reverse": {
      "default": false,
      "description": "Reverse direction (-r flag)",
      "type": "boolean"
    },
    "quiet": {
      "default": false,
      "description": "Suppress informational messages (-q flag)",
      "type": "boolean"
    },
    "max_files": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Limit number of files processed (-m flag)",
      "examples": [
        100,
        500
      ]
    },
    "output_base": {
      "default": false,
      "description": "Show base revision with each scheduled resolve (-Ob flag for merge/integrate) or display list of files created (-o flag for populate)",
      "type": "boolean"
    },
    "virtual": {
      "default": false,
      "description": "Copy using virtual stream (-v flag, copy only)",
      "type": "boolean"
    },
    "schedule_branch_resolve": {
      "default": false,
      "description": "Schedule 'branch resolves' instead of branching new target files automatically (-Rb flag)",
      "type": "boolean"
    },
    "integrate_around_deleted": {
      "default": false,
      "description": "Integrate around deleted revisions (-Di flag)",
      "type": "boolean"
    },
    "skip_cherry_picked": {
      "default": false,
      "description": "Skip cherry-picked revisions already integrated (-Rs flag)",
      "type": "boolean"
    },
    "source_path": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Source path for populate",
      "examples": [
        "//depot/main/..."
      ]
    },
    "target_path": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Target path for populate",
      "examples": [
        "//depot/dev/..."
      ]
    },
    "workspace": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Workspace name for switch",
      "examples": [
        "my_workspace"
      ]
    },
    "workspace_name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Workspace name to create (create_workspace)",
      "examples": [
        "new_stream_workspace"
      ]
    },
    "root": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Workspace root directory (create_workspace)",
      "examples": [
        "/home/user/perforce/workspace"
      ]
    },
    "host": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Host restriction (create_workspace)",
      "examples": [
        "workstation01"
      ]
    },
    "alt_roots": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Alternate root paths (create_workspace)",
      "examples": [
        [
          "/home/user/alt_root",
          "/mnt/shared/workspace"
        ]
      ]
    }
  },
  "required": [
    "action"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
modify_workspacesCreate/delete workspace, Update workspace specs, and switch active workspace (WRITE permission)
Input schema
{
  "additionalProperties": false,
  "properties": {
    "action": {
      "description": "Workspace modification action: create makes new workspace, delete removes workspace, update modifies workspace spec, switch changes active workspace",
      "enum": [
        "create",
        "delete",
        "update",
        "switch"
      ],
      "type": "string"
    },
    "workspace_name": {
      "description": "Workspace name",
      "examples": [
        "my_workspace"
      ],
      "type": "string"
    },
    "workspace_root": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Root path of the workspace",
      "examples": [
        "/depot/workspace",
        "C:\\workspace"
      ]
    },
    "workspace_description": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Workspace description",
      "examples": [
        "Dev workspace for project X"
      ]
    },
    "workspace_options": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "noallwrite noclobber nocompress unlocked nomodtime normdir",
      "description": "Workspace options",
      "examples": [
        "noallwrite clobber nocompress unlocked nomodtime normdir"
      ]
    },
    "workspace_line_end": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "local",
      "description": "Line ending style (local, unix, win, mac)",
      "examples": [
        "local",
        "unix"
      ]
    },
    "workspace_view": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "View mappings in depot-to-client format",
      "examples": [
        [
          "//depot/... //my_workspace/..."
        ]
      ]
    }
  },
  "required": [
    "action",
    "workspace_name"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
query_changelistsGet changelist details and list changelists (READ permission)
Input schema
{
  "additionalProperties": false,
  "properties": {
    "action": {
      "description": "Changelist query action: get retrieves specific changelist details, list returns all changelists matching filters",
      "enum": [
        "get",
        "list"
      ],
      "type": "string"
    },
    "changelist_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Changelist ID - required for get action",
      "examples": [
        "12345",
        "default"
      ]
    },
    "workspace_name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Filter by workspace - for list action",
      "examples": [
        "my_workspace"
      ]
    },
    "user": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Filter by user - for list action",
      "examples": [
        "alice"
      ]
    },
    "status": {
      "anyOf": [
        {
          "enum": [
            "pending",
            "submitted"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Filter by status - for list action"
    },
    "depot_path": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Filter by depot path - for list action",
      "examples": [
        "//depot/my_workspace/..."
      ]
    },
    "max_results": {
      "anyOf": [
        {
          "maximum": 1000,
          "minimum": 1,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Maximum number of results to return. Bounds the 'list' action and also caps open files for get('default') via 'p4 opened -m N'. Omit for unbounded results."
    }
  },
  "required": [
    "action"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
query_filesGet file content, history, info, diff, annotations, search by name, grep by content (READ permission)
Input schema
{
  "additionalProperties": false,
  "properties": {
    "action": {
      "description": "File query action, metadata includes extra information like optional attributes and file size",
      "enum": [
        "content",
        "history",
        "info",
        "metadata",
        "diff",
        "annotations",
        "search",
        "grep"
      ],
      "type": "string"
    },
    "file_path": {
      "description": "Primary file path - required for all actions",
      "examples": [
        "//depot/projectX/file.txt",
        "/local/path/file.txt"
      ],
      "type": "string"
    },
    "file2": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Second file path - required for diff action",
      "examples": [
        "//depot/projectX/file2.txt"
      ]
    },
    "diff2": {
      "default": true,
      "description": "Use p4 diff2 for depot-to-depot diff, false for mixed diff",
      "type": "boolean"
    },
    "max_results": {
      "anyOf": [
        {
          "maximum": 1000,
          "minimum": 1,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Maximum number of results to return. Bounds history/search/grep and also caps fstat info/metadata via 'p4 fstat -m N'. Omit for unbounded info/metadata results."
    },
    "pattern": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Search or grep pattern - required for search and grep actions",
      "examples": [
        "*.py",
        "TODO",
        "class.*Handler"
      ]
    },
    "case_insensitive": {
      "default": false,
      "description": "Case-insensitive matching for grep action",
      "type": "boolean"
    }
  },
  "required": [
    "action",
    "file_path"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
query_jobsGet jobs from changelist and get job details (READ permission)
Input schema
{
  "additionalProperties": false,
  "properties": {
    "action": {
      "description": "Job query action: list_jobs returns jobs linked to changelist, get_job retrieves specific job details",
      "enum": [
        "list_jobs",
        "get_job"
      ],
      "type": "string"
    },
    "changelist_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Changelist ID - required for list_jobs action",
      "examples": [
        "12345"
      ]
    },
    "job_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Job ID - required for get_job action",
      "examples": [
        "job67890"
      ]
    },
    "max_results": {
      "default": 100,
      "description": "Maximum number of results to return",
      "maximum": 1000,
      "minimum": 1,
      "type": "integer"
    }
  },
  "required": [
    "action"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
query_reviewsGet review details and list reviews (READ permission). Open review - state is 'approved but pending=true' or 'needsReview' or 'needsRevision'. Closed review - state is 'approved but pending=false' or 'rejected' or 'archived'.
Input schema
{
  "additionalProperties": false,
  "properties": {
    "action": {
      "description": "Review query action: list all reviews, dashboard for current user, get specific review, transitions, files_readby, files, comments, activity",
      "enum": [
        "list",
        "dashboard",
        "get",
        "transitions",
        "files_readby",
        "files",
        "comments",
        "activity"
      ],
      "type": "string"
    },
    "review_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Review ID - required for get, transitions, files_readby, files, comments, activity actions",
      "examples": [
        12345,
        67890
      ]
    },
    "fields": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "List of fields to return for list/get actions",
      "examples": [
        [
          "id",
          "description",
          "author",
          "state"
        ],
        [
          "id",
          "author",
          "state",
          "participants",
          "commits"
        ]
      ]
    },
    "comments_fields": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "id,body,user,time",
      "description": "Comma-separated list of fields to return for comments action",
      "examples": [
        "id,body,user,time",
        "id,user,time"
      ]
    },
    "up_voters": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "List of up voters for transitions action",
      "examples": [
        [
          "alice",
          "bob"
        ]
      ]
    },
    "from_version": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Starting version for files action",
      "examples": [
        1,
        2
      ]
    },
    "to_version": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Ending version for files action",
      "examples": [
        2,
        3
      ]
    },
    "max_results": {
      "default": 10,
      "description": "Maximum number of results to return",
      "type": "integer"
    },
    "after": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Review ID to seek to for pagination (list action). Reviews up to and including this ID are excluded.",
      "examples": [
        "12344"
      ]
    },
    "after_updated": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Return reviews updated on the day before this date/time in seconds since epoch (list action). Mutually exclusive with 'after'.",
      "examples": [
        "1606233362"
      ]
    },
    "result_order": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Set to 'updated' to return most recently updated reviews first (list action)",
      "examples": [
        "updated"
      ]
    },
    "projects": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Filter by project name(s) (list action)",
      "examples": [
        [
          "myproject"
        ]
      ]
    },
    "state": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Filter by review state(s) (list action). Valid: needsRevision, needsReview, approved, approved:isPending, approved:commit, approved:notPending, rejected, archived",
      "examples": [
        [
          "needsReview"
        ]
      ]
    },
    "keywords": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Search keyword(s) to filter reviews (list action). Use with keywords_fields.",
      "examples": [
        "bugfix",
        "12345"
      ]
    },
    "keywords_fields": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Fields to search keywords in (list action). Valid: changes, author, participants, hasReviewer, description, updated, projects, state, testStatus, pending, groups, id",
      "examples": [
        [
          "description"
        ],
        [
          "author"
        ],
        [
          "changes"
        ]
      ]
    },
    "include_transitions": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Include allowed state transitions in get action response"
    }
  },
  "required": [
    "action"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
query_serverGet server info and current user information (READ permission)
Input schema
{
  "additionalProperties": false,
  "properties": {
    "action": {
      "description": "Server query action: server_info returns P4 server metadata and version, current_user returns authenticated user details and permissions",
      "enum": [
        "server_info",
        "current_user"
      ],
      "type": "string"
    }
  },
  "required": [
    "action"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
query_shelvesList shelves, get shelve diff and files (READ permission)
Input schema
{
  "additionalProperties": false,
  "properties": {
    "action": {
      "description": "Shelve query action: list returns all shelved changelists, diff shows shelved file differences, files lists files in shelved changelist",
      "enum": [
        "list",
        "diff",
        "files"
      ],
      "type": "string"
    },
    "changelist_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Changelist ID - required for diff and files actions",
      "examples": [
        "12345"
      ]
    },
    "user": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Filter by user - for list action",
      "examples": [
        "alice"
      ]
    },
    "max_results": {
      "default": 100,
      "description": "Maximum number of results to return",
      "maximum": 1000,
      "minimum": 1,
      "type": "integer"
    }
  },
  "required": [
    "action"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
query_streamsQuery streams: list, get spec, children/parent/graph, integration status, workspaces, validate files, check resolve, interchanges (READ permission)
Input schema
{
  "additionalProperties": false,
  "properties": {
    "action": {
      "description": "Stream query action: 'list' streams, 'get' stream spec, 'children'/'parent'/'graph' of a stream, 'integration_status' (p4 istat), 'get_workspace'/'list_workspaces', 'validate_file'/'validate_submit' against stream view, 'check_resolve' for pending spec conflicts, 'interchanges' between streams",
      "enum": [
        "list",
        "get",
        "children",
        "parent",
        "graph",
        "integration_status",
        "get_workspace",
        "list_workspaces",
        "validate_file",
        "validate_submit",
        "check_resolve",
        "interchanges"
      ],
      "type": "string"
    },
    "stream_name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Stream depot path (e.g. '//depot/main'). Required for most actions.",
      "examples": [
        "//depot/main",
        "//depot/dev"
      ]
    },
    "stream_path": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Stream path pattern(s) for 'list' (e.g. ['//depot/...'])",
      "examples": [
        [
          "//depot/..."
        ]
      ]
    },
    "filter": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Filter expression string for 'list' (-F flag). Supports &, |, and parentheses. E.g. 'Parent=//Ace/MAIN&(Type=development|Type=release)'",
      "examples": [
        "Type=development",
        "Parent=//depot/main&Type=release",
        "Owner=alice|(Type=development&Parent=//depot/main)"
      ]
    },
    "fields": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Fields to return for 'list' (e.g. ['Stream', 'Owner', 'Name', 'Type'])",
      "examples": [
        [
          "Stream",
          "Owner",
          "Name",
          "Type"
        ]
      ]
    },
    "unloaded": {
      "default": false,
      "description": "Include unloaded streams/workspaces",
      "type": "boolean"
    },
    "all_streams": {
      "default": false,
      "description": "Include virtual streams in 'list' results",
      "type": "boolean"
    },
    "viewmatch": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Single depot file path to filter streams whose views contain this path",
      "examples": [
        "//depot/main/src/file.txt"
      ]
    },
    "view_without_edit": {
      "default": false,
      "description": "View locked stream without opening for edit (-v flag)",
      "type": "boolean"
    },
    "at_change": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Changelist number for historical stream spec",
      "examples": [
        "12345"
      ]
    },
    "both_directions": {
      "default": false,
      "description": "Show integration status in both directions (-a flag for integration_status)",
      "type": "boolean"
    },
    "force_refresh": {
      "default": false,
      "description": "Force istat to assume cache is stale and search for pending integrations (-c flag)",
      "type": "boolean"
    },
    "workspace": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Workspace name for get_workspace, validate_file, validate_submit",
      "examples": [
        "my_workspace"
      ]
    },
    "template": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Template workspace for get_workspace",
      "examples": [
        "template_workspace"
      ]
    },
    "user": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Filter workspaces by user (list_workspaces)",
      "examples": [
        "alice",
        "bob"
      ]
    },
    "file_paths": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "File paths for validate_file or interchanges",
      "examples": [
        [
          "//depot/main/src/file.txt",
          "//depot/dev/src/file.txt"
        ]
      ]
    },
    "changelist": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Changelist for validate_submit",
      "examples": [
        "12345"
      ]
    },
    "reverse": {
      "default": false,
      "description": "Reverse comparison direction (interchanges)",
      "type": "boolean"
    },
    "long_output": {
      "default": false,
      "description": "Full changelist descriptions (interchanges)",
      "type": "boolean"
    },
    "limit": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Max changelists (interchanges)",
      "examples": [
        10,
        50
      ]
    },
    "max_results": {
      "anyOf": [
        {
          "maximum": 1000,
          "minimum": 1,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Maximum number of results to return. Bounds 'list' and 'list_workspaces' and also caps 'children' via 'p4 streams -m N'. Omit for unbounded results."
    }
  },
  "required": [
    "action"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}
query_workspacesGet workspace details, list workspaces, check type and status (READ permission)
Input schema
{
  "additionalProperties": false,
  "properties": {
    "action": {
      "description": "Workspace query action: list returns all workspaces matching filters, get retrieves specific workspace spec, type identifies workspace category, status shows opened files and sync state",
      "enum": [
        "list",
        "get",
        "type",
        "status"
      ],
      "type": "string"
    },
    "workspace_name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Workspace name - required for get, type, status actions",
      "examples": [
        "my_workspace"
      ]
    },
    "user": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Filter by user - optional for list action",
      "examples": [
        "alice",
        "bob"
      ]
    },
    "max_results": {
      "default": 100,
      "description": "Maximum number of results to return",
      "maximum": 1000,
      "minimum": 1,
      "type": "integer"
    }
  },
  "required": [
    "action"
  ],
  "type": "object"
}
Output schema
{
  "additionalProperties": true,
  "type": "object"
}

Resources 0

Resource templates 0

Prompts 0

Changes from previous version

No completed comparison is available.

RiskChangeSubject
No material changes recorded.

Confirmed vulnerabilities

SeverityFindingAdvisory
No confirmed vulnerability is published for this version.

Provenance

Artifact SHA-256: f1b05e8d3ce6acea3bfbda9828a14fc1dac009026f4b718c53859e4d978378b1

Scanner: mcp-proof-engine 0.1.0.

Let’s talk about MCP security.

Share your details and our security team will contact you.