Skip to main content
Glama

Get work package git activity

get_work_package_git_activity
Read-onlyIdempotent

Shows commits, pull/merge requests, and CI status linked to a work package, helping you verify if a ticket is implemented and what shipped.

Instructions

Show the code behind a work package: commits, pull/merge requests and CI status.

Use this for "is this ticket implemented", "what shipped for it", "did CI pass", "which branch/PR is this in". It returns, in one call: revisions (commits whose message references the work package, with full SHA, short SHA, author, message and commit time), github_pull_requests (title, state, draft, merged/merged_at, labels, author, URL and the CI check_runs with status and conclusion), gitlab_merge_requests (the same, with pipelines instead of check runs) and gitlab_issues.

available says, per source, whether this instance and this account can answer at all, and notes explains every false — "module absent" and "no permission" are different answers and neither means "no code was written". Report the notes rather than concluding a ticket has no development activity.

Pitfalls. Every pull/merge request carries two numbers: id is the OpenProject-internal id (the only thing get_github_pull_request accepts) and number is the '#481' humans quote on GitHub/GitLab. A state of 'closed' does not mean merged — check merged. A source that 403s or 404s is reported in notes, not raised, so a missing GitLab module never hides GitHub results.

Nothing appears here by magic. Links are created by text, not by the API: a commit message must mention the work package ('refs #123', or 'fixes #123' / 'closes #123' to also close it), and a pull or merge request must mention 'OP#123' or the full work-package URL in its description or a comment. OpenProject cannot browse repositories, list branches or diffs, or create these links through the API.

Cross-references: full pull-request detail (body, diff counts, all check runs) via get_github_pull_request(github_pull_request_id=<the id field>); the ticket itself via get_work_package; the discussion via list_work_package_comments.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
includeNoWhich sources to fetch: any of 'revisions' (SCM commits), 'github' (pull requests + CI check runs), 'gitlab' (merge requests, issues + pipelines). Omit for all three — they are fetched concurrently, so narrowing this saves little. Availability is reported for all three regardless of what was fetched.
work_package_idYesWork package id. Comes from search_work_packages, list_work_packages or get_work_package — never guess it.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
notesNoDegradation notes: which sources were skipped and why. Read them before reporting 'there are no pull requests'.
availableYesPer-source availability, derived from the work package's own links.
revisionsNoCommits referencing this work package; always a list.
work_packageNoThe work package these results belong to ({id, name}).
gitlab_issuesNoLinked GitLab issues; always a list.
github_pull_requestsNoLinked GitHub pull requests; always a list.
gitlab_merge_requestsNoLinked GitLab merge requests; always a list.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even with readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false already present, the description adds crucial behavioral context: the distinction between internal `id` and human-facing `number`, the fact that 'closed' does not imply 'merged', and the error-handling behavior where 403/404s are reported in `notes` instead of being raised. It also discloses that links are only created via text mentions in commit messages or MR/PR descriptions, not by the API.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but deliberately structured: purpose, use cases, return shape, availability semantics, pitfalls, and cross-references. Every sentence carries weight—none are filler. The critical warnings (id vs number, closed vs merged, notes for errors) are essential for correct invocation and interpretation. It front-loads the purpose and then layers details logically.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (multiple source types, availability flags, CI status, pitfalls), the description covers every operational aspect: what data comes back, what each field means, how errors surface, and how links are created. It also points to companion tools for deeper detail, and the output schema covers the exact return shape. There is no obvious gap that would leave an agent guessing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes both parameters with 100% coverage. The description goes further by explaining the concurrency behavior of `include` ('they are fetched concurrently, so narrowing this saves little') and the fact that availability is always reported for all three sources regardless. It also strongly advises against guessing `work_package_id` and tells the agent where it comes from, adding trust and safety guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific and vivid statement: 'Show the code behind a work package: commits, pull/merge requests and CI status.' It clearly names the resource (work package) and the action (show git activity), and enumerates the three concrete result categories. This unambiguously distinguishes it from siblings like get_work_package or list_work_package_comments.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly prescribes when to use the tool: 'Use this for "is this ticket implemented", "what shipped for it", "did CI pass", "which branch/PR is this in".' It also names alternatives and cross-references: full PR detail via get_github_pull_request, the ticket via get_work_package, and the discussion via list_work_package_comments. This gives the agent clear decision criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kar-thik/openproject-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server