Teams: list them, filter projects by team, and move projects between teams.
Project.teamsis nowVec<Team>(id + name), notVec<String>.GET /v2/projectsreturns team objects, so listing any project on a team failed to parse before this.
list teams(--search, or--project <locator>for one project's teams).list projects --team <id>/--no-team.add project <locators…> --team <id>andremove project <locators…> --team <id>.move project <locators…> --from <id> --to <id>: adds to the target team, then removes from the source. If the add fails nothing is removed; if the remove fails the error says the projects are now on both teams.$revisionsuffixes are stripped. The API's destructivereplaceaction is never sent.add,removeandmoveare also new MCP tools.
The CLI and MCP server now share one set of operation declarations (src/ops/),
so the two surfaces expose identical operations with identical parameters.
- MCP arg shapes changed. Per-entity fields replace the generic
parent/stringid; list entities are plural ({"entity": "issues", ...}), matching the CLI. Agent clients pick the new shapes up fromtools/list; saved call examples must be updated (see README → Migrating to the unified surface). - The standalone
snippet_matchMCP tool is gone. Usegetwithentity: "snippet_match". list snippet-locationsis paginated. Both surfaces page over the underlying snippets (--page/--count) and return a page object instead of an unbounded array.- CLI:
list dependenciesno longer accepts--revisionas an alternative to the positional revision argument. update projectwith no fields to change is rejected instead of sending an empty update.
- MCP gains
get snippet, pagedlist snippets,list snippet_paths, and issue-category auto-probe; the CLI gainsupdate --url/--policy-id/ --default-branchand real pagination onlist revisionsandlist dependencies. page/countvalues below 1 are clamped to 1 (countis capped at 100).- MCP calls using the legacy arg shapes fail with a migration hint naming this change.
- Issues can be ignored and unignored — the first issue write surface,
as new top-level verbs on both surfaces. CLI:
ignore issue <id> --category <c> [--notes <comment>] [--reason <r>]andunignore issue <id> --category <c>; MCP: newignoreandunignoretools. Ignoring an already-ignored issue is refused with a prompt to unignore first (see ADR 0002), and--reasonis accepted on vulnerability issues only (FOSSA never displays reasons elsewhere). Requires a full API token (push-only tokens cannot write issues).