Files
holocron/plugins/gitea/skills/gitea-releases/references/call-signatures.md
Defame1297 d2da45f78c fix(gitea-releases): restore the prerelease imperative to the create path
The retrofit left only a descriptive sentence on the loaded path — "Gitea
never infers a prerelease from a -beta/-rc tag name" — and moved the
imperative into references/conventions.md behind a trigger listing semver
naming, release-notes sourcing and release-to-tag relationships. Draft and
prerelease are not in that list, and "cut a v2.0.0-beta.1" is exactly the
request where the caller does not raise the topic, so the rule was
unreachable from the flow that needs it.

Severity comes from the repair path: the MCP surface has create, get,
get_latest, list and delete only — there is no update or edit tool. A
release published without is_pre_release can only be corrected by
delete_release plus a fresh create, and get_latest_release points
consumers at the beta meanwhile. Neither SKILL.md nor call-signatures.md
said so anywhere.

The flags are now set explicitly on every create, the missing update tool
and its delete-and-recreate consequence are stated in the body, and the
semver pass-through rule stranded behind the same trigger is promoted
alongside it. call-signatures.md now cites the deployed tool description
as direct evidence that get_latest_release excludes drafts, while keeping
the prerelease half hedged — that remains unconfirmed.

Verified live against gitea-mcp v1.7.0, read-only calls.

Refs #99
2026-08-30 20:51:22 +00:00

4.1 KiB

topic, source_keys
topic source_keys
call-signatures
gitea-mcp-repo
gitea-mcp-slim-go

Release and tag call signatures

Signatures and response shapes are derived from gitea-mcp source (operation/*.go and slim.go, see references/sources.md) rather than copied from upstream API docs, which can drift from the deployed gitea-mcp version — but this is a source-code extraction, not a live MCP tool call.

Input parameter schemas for 3 of the 9 tools here — create_release, delete_tag, and get_latest_release — were additionally cross-checked live via ToolSearch against the deployed mcp__gitea__* tools in session 2026-07-05, and confirmed to match exactly (required/optional params and names). That check covered only input params for those 3 tools, not response shapes, and not the other 6 tools — treat the rest of this document as source-derived, not live-verified.

owner and repo are required strings on every tool below and are omitted from the per-tool lists for brevity.

Releases

list_releases

  • Optional: is_draft (boolean), is_pre_release (boolean), page (number, default 1), per_page (number, default 20)
  • Returns an array of release objects (shape below), one page at a time.

get_release

  • Required: id (number) — the release's numeric id, not its tag name.
  • Returns a single release object.

get_latest_release

  • No parameters beyond owner/repo.
  • Returns a single release object for the most recently published release. The deployed tool's own description reads "the most recent published (non-draft) release" — it names drafts as excluded and is silent on prereleases, so whether prereleases are also excluded is unconfirmed; verify with list_releases if the caller depends on it. Either way a release created without is_pre_release: true is eligible, which is why that flag has to be set in the create call (see conventions.md).

create_release

  • Required: tag_name (string), target (string — branch, tag, or commit SHA to cut the tag from), title (string)
  • Optional: body (string — release notes), is_draft (boolean), is_pre_release (boolean)
  • Assumed (not confirmed by the research docs) that if tag_name doesn't already exist as a tag, Gitea creates it against target as part of this call. Verify with get_tag/list_tags afterward if the caller needs certainty.

delete_release

  • Required: id (number) — same numeric id as get_release. Does not accept tag_name.
  • Does not delete the underlying tag.

Release object shape (returned by list/get/create/latest):

id, tag_name, target, title, body, draft, prerelease, html_url, author, created_at, published_at

author is the creator's login. body holds the release notes.

Tags

list_tags

  • Optional: page (number, default 1), per_page (number, default 20)
  • Returns an array of { name, commit_sha } — no message field on list responses.

get_tag

  • Required: tag_name (string)
  • Returns { name, message, commit_sha } — the only tag call that returns message.

create_tag

  • Required: tag_name (string)
  • Optional: target (string — commitish to tag; if omitted, Gitea tags the default branch tip), message (string — annotated tag message)

delete_tag

  • Required: tag_name (string). Does not accept a numeric id.
  • Assumed by symmetry with delete_release (documented above as not deleting the underlying tag) to also not delete any release wrapping the tag — but this reverse direction is not independently confirmed by the research docs, and is the more dangerous direction to get wrong: an agent might skip an explicit delete_release call assuming the release survives. Verify with list_releases/get_release after calling delete_tag rather than assume.

Pagination

None of the list tools auto-paginate. To collect a full result set, call with page: 1, then page: 2, etc., stopping when a page returns fewer items than per_page. list_releases and list_tags default per_page to 20 — lower than the 30-default used by most other gitea-mcp list tools, so a caller assuming 30 will under-count pages needed for a fixed total.