Skip to main content
Glama

tool_get_regrade_detail

Retrieve detailed information about a specific regrade request, including student messages, rubric items, grader responses, and submission links for instructor review.

Instructions

Get detailed information about a specific regrade request.

Shows the student's regrade message, the current rubric, applied rubric items,
the grader's response (if any), and submission page links. Use question_id and
submission_id from the regrade request listing.
Requires instructor/TA access.

Args:
    course_id: The Gradescope course ID.
    question_id: The question ID (from get_regrade_requests).
    submission_id: The submission ID (from get_regrade_requests).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
course_idYes
question_idYes
submission_idYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Implementation Reference

  • The core business logic function get_regrade_detail that fetches regrade information.
    def get_regrade_detail(course_id: str, question_id: str, submission_id: str) -> str:
        """Get detailed information about a specific regrade request.
    
        Shows the student's regrade message, the current rubric, applied rubric items,
        the grader's response (if any), and links to the student's submission.
        Requires instructor/TA access.
    
        Args:
            course_id: The Gradescope course ID.
            question_id: The question ID (from regrade request listing).
            submission_id: The submission ID (from regrade request listing).
        """
        if not course_id or not question_id or not submission_id:
            return "Error: course_id, question_id, and submission_id are required."
    
        try:
            conn = get_connection()
            url = (
                f"{conn.gradescope_base_url}/courses/{course_id}"
                f"/questions/{question_id}/submissions/{submission_id}/grade"
            )
            resp = conn.session.get(url)
        except AuthError as e:
            return f"Authentication error: {e}"
        except Exception as e:
            return f"Error fetching regrade detail: {e}"
    
        if resp.status_code != 200:
            return f"Error: Cannot access grading page (status {resp.status_code})."
    
        soup = BeautifulSoup(resp.text, "html.parser")
        grader = soup.find(attrs={"data-react-class": "SubmissionGrader"})
        if not grader:
            return "Error: SubmissionGrader component not found."
    
        try:
  • The tool wrapper tool_get_regrade_detail registered with @mcp.tool() which calls the core business logic.
    def tool_get_regrade_detail(
        course_id: str, question_id: str, submission_id: str
    ) -> str:
        """Get detailed information about a specific regrade request.
    
        Shows the student's regrade message, the current rubric, applied rubric items,
        the grader's response (if any), and submission page links. Use question_id and
        submission_id from the regrade request listing.
        Requires instructor/TA access.
    
        Args:
            course_id: The Gradescope course ID.
            question_id: The question ID (from get_regrade_requests).
            submission_id: The submission ID (from get_regrade_requests).
        """
        return get_regrade_detail(course_id, question_id, submission_id)
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It successfully adds important context beyond what's in the schema: it specifies the tool 'Requires instructor/TA access' (permissions requirement), describes what information is returned (student message, rubric details, grader response, links), and indicates parameter sources (from get_regrade_requests). It doesn't mention rate limits, pagination, or error behavior, but provides substantial operational context.

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 efficiently structured with zero waste: a clear purpose statement, specific information returned, usage guidance with parameter sources, and access requirements. Every sentence adds value, and it's appropriately sized for a tool with 3 parameters and no annotations. The information is front-loaded with the core purpose first.

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

Completeness4/5

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

Given the tool's complexity (regrade detail retrieval with 3 parameters), no annotations, but with an output schema present, the description provides substantial context. It covers purpose, returned information, parameter semantics, and access requirements. The output schema existence means the description doesn't need to explain return values. It could potentially mention error cases or rate limits, but covers the essential operational context well.

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

Parameters4/5

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

With 0% schema description coverage, the description must compensate for the schema's lack of parameter documentation. It successfully adds meaning for all three parameters: course_id is identified as 'The Gradescope course ID', and both question_id and submission_id are specified as coming 'from get_regrade_requests'. This provides crucial context about parameter sources and relationships that isn't in the schema.

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 clearly states the specific action ('Get detailed information') and resource ('about a specific regrade request'), and distinguishes it from siblings by specifying it's for detailed regrade info rather than listing regrade requests (tool_get_regrade_requests) or other operations. It explicitly lists the specific information returned: student's regrade message, current rubric, applied rubric items, grader's response, and submission page links.

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool: when you need detailed information about a specific regrade request, and it specifies that question_id and submission_id should come 'from the regrade request listing' (presumably tool_get_regrade_requests). However, it doesn't explicitly state when NOT to use it or name specific alternatives among the sibling tools.

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/Yuanpeng-Li/gradescope-mcp'

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