Class GetReportTool

java.lang.Object
ai.tabforge.workshop.GetReportTool

public class GetReportTool extends Object
MCP Tool: get_report

Polling tool that Claude calls repeatedly after start_review to check the current state of a review session. Returns different JSON depending on status — Claude reads the status field and decides what to do next based on the DESCRIPTION instructions.

Flow:


 Claude AI → calls get_report(reviewId)
     ↓
 GetReportTool.execute() → reads ReviewSession from OrchestratorAgent
     ↓
 RUNNING        → { status, progress }        → Claude waits and calls again
 AWAITING_HUMAN → { status, question, ... }   → Claude presents question to developer
 COMPLETED      → { status, report }          → Claude presents findings
 CANCELLED      → { status, message }         → Claude informs developer
 FAILED         → { status, message }         → Claude suggests checking logs
 

Created by: WorkshopServer.start() at server startup. Receives OrchestratorAgent via constructor injection.

CERTIFICATION NOTE — covers two exam domains:

  • Domain 4 — Tool Design & MCP Integration (18%): Demonstrates that a single tool can return different JSON schemas depending on state. The DESCRIPTION field teaches Claude how to interpret each possible response — this is Task Statement 4.1: "Design MCP tool interfaces with clear descriptions and input schemas."
  • Domain 1 — Agentic Architecture & Orchestration (27%): This tool implements the polling side of the async pattern started by StartReviewTool. Claude polls this tool periodically — not because we programmed a loop, but because the DESCRIPTION tells it to. This is Task Statement 1.7: "Manage session state, resumption, and forking."

  • Constructor Details

  • Method Details

    • toolSpecification

      public io.modelcontextprotocol.server.McpServerFeatures.AsyncToolSpecification toolSpecification(io.modelcontextprotocol.json.McpJsonMapper jsonMapper)