gitea-releases was the weakest skill in the plugin: no allowed-tools, no owner/repo resolution, and a checkbox list where a dispatch table belongs, so an agent reaching it had to guess both its permissions and its inputs. The id-vs-tag_name trap — deleting by tag name where the API wants the numeric id — is restored as an explicit Gotcha because it destroys the wrong release silently. Elsewhere the `exclusive` flag was documented on the wrong side of the read/write split, and label data from one instance was presented as though it were universal, which invites an agent to assume a taxonomy that does not exist on the target repo. rename_branch was missing from the branch surface. Reference prose and fences are cleaned up in passing.
3.4 KiB
name, description, compatibility, metadata, allowed-tools
| name | description | compatibility | metadata | allowed-tools | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| gitea-prs | Use when listing, reading, creating, updating, merging, or reviewing Gitea pull requests — even when the user does not say "Gitea". Not issues -> `gitea-issues`. | Requires Gitea MCP server configured with write:issue and write:repository token scopes. Requires git remote "origin" pointing to the Gitea instance for owner/repo resolution when invoked directly by a human; an orchestrating caller (e.g. gitea-workflow) may pass owner/repo already resolved. |
|
Bash mcp__gitea__list_pull_requests mcp__gitea__pull_request_read mcp__gitea__pull_request_write mcp__gitea__pull_request_review_write |
Gotchas
- Issues and PRs share one number space.
#42may be an issue rather than a PR. When unsure, callpull_request_read method: "get"and read a 404 as "that number is an issue" — hand it togitea-issues. pull_request_write method: "create"discards most optional parameters in silence.milestone,assignee,assignees,reviewersandteam_reviewersare accepted, dropped, and left out of the response, so a drop is indistinguishable from never passing them.labelsdoes apply on"create", so labels landing is no evidence the milestone did.
Step 1 — Resolve owner and repo
Extract them from the git remote before any tool call, skipping this when an orchestrating caller already passed them in:
git remote get-url origin
If origin is not set or the URL is not a Gitea URL, stop and report: "No Gitea remote found — set origin to your Gitea instance URL."
Step 2 — Dispatch
Confirm the number names a PR, not an issue, before writing to it.
| Task | Tool | Reference |
|---|---|---|
| List PRs; read a PR's details, diff, changed files or CI status | list_pull_requests, pull_request_read |
references/pull-requests.md |
| Create a PR — subject to the silent-drop Gotcha above | pull_request_write |
references/pull-requests.md |
| Update, close, reopen or retarget a PR, sync it with its base, or add/remove reviewers | pull_request_write |
references/pull-requests.md |
| Merge a PR, or judge whether it can merge | pull_request_write method: "merge" |
references/merging.md |
| Read, create, submit, dismiss or delete a code review, or reply to and resolve a review comment thread | pull_request_read, pull_request_review_write |
references/reviews.md |
Read the reference for the row you land on before making the call. Each carries the parameter signatures, the per-method behaviour and the response-shape quirks the row cannot, and every write method has at least one parameter that behaves differently from its issue-side counterpart.
Step 3 — Resolving labels and milestones
labels and milestone take numeric IDs, never name or title strings. Before a pull_request_write call carrying either, resolve them through gitea-labels-milestones: label_read method: "list_repo_labels" for a label name, milestone_read method: "list" for a milestone title.
Resolve a milestone only when the call is an "update" — on "create" the lookup is wasted, per the Gotcha above. Recovering an existing PR's milestone ID needs the same lookup, because pull_request_read returns milestone as a bare title string and never an ID.