Skip to content

feat: Gamification MCP 'my progress' read tools - EXO-88399#1985

Open
bmestrallet wants to merge 1 commit into
feat/gamification-mcp-toolsfrom
feat/gamification-progress-reads
Open

feat: Gamification MCP 'my progress' read tools - EXO-88399#1985
bmestrallet wants to merge 1 commit into
feat/gamification-mcp-toolsfrom
feat/gamification-progress-reads

Conversation

@bmestrallet

Copy link
Copy Markdown

What

Follow-up batch of 6 read-only "my progress" tools on GamificationMcpTool, extending the campaigns/quests set. Campaign vocabulary; all reads, hard-scoped to the caller (no arbitrary identity param). Stacked on #1984.

Tool Backing
list_campaign_badges(campaign_id) BadgeService.findEnabledBadgesByProgramId (view-gated)
get_my_campaigns(limit, offset) ProgramService.getMemberProgramIds + getOwnedProgramIds
list_joinable_campaigns(limit, offset) ProgramService.getPublicProgramIds
get_my_points_total(from_date, to_date, campaign_id?) RealizationService.getScoreByIdentityIdAndBetweenDates
get_my_score_breakdown(period) RealizationService.getLeaderboardStatsByIdentityId
check_quest_availability(quest_id) getRealizationValidityContext + hasPendingRealization

list_my_realizations (already shipped) remains the per-event history; these add badges, my/joinable campaigns, windowed totals, breakdown, and the announce pre-check.

Tests & verification

  • mvn clean install -pl services -Pcoverage → BUILD SUCCESS, 354 tests, coverage gate 0.75 held; -parameters confirmed (MethodParameters 46).
  • Verified live with EVA (6/6 PASS): points total 211 = breakdown (181 + 30); quest availability returned a proper yes + reason.

AI contribution. Stacked on feat/gamification-mcp-tools (#1984).

Add 6 read-only campaign-progress tools to GamificationMcpTool, stacked on
the existing gamification MCP tools:
- list_campaign_badges: badges (levels) of a campaign + score needed
- get_my_campaigns: campaigns the user is a member of or owns
- list_joinable_campaigns: open public campaigns to join
- get_my_points_total: total points earned in a date range / campaign
- get_my_score_breakdown: points per campaign for a period
- check_quest_availability: pre-check for announce_quest with a reason

All tools are hard-scoped to the current user (self identity id / username
resolved via the existing helpers; no arbitrary identity accepted).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@bmestrallet bmestrallet requested a review from ahamdi July 6, 2026 16:49
@sonarqubecloud

sonarqubecloud Bot commented Jul 6, 2026

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant