Skip to main content
Glama

post_comment

Post comments on conference paper submissions with configurable visibility for reviewers and chairs, using a preview-and-confirm system.

Instructions

Post a comment on a submission. Returns a preview — call confirm_submission to post it.

Default readers include ACs, SACs, and PCs. Override with the readers parameter.

Args: venue_id: The venue identifier. submission_number: The paper number. comment_text: The comment text. readers: Who can see this comment. Defaults to ACs + SACs + PCs + Reviewers for the paper.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
venue_idYes
submission_numberYes
comment_textYes
readersNo

Implementation Reference

  • The post_comment function handler, registered as an MCP tool, which posts a comment on a submission and returns a preview for confirmation.
    @mcp.tool()
    async def post_comment(
        venue_id: str,
        submission_number: int,
        comment_text: str,
        readers: list[str] | None = None,
    ) -> str:
        """Post a comment on a submission. Returns a preview — call confirm_submission to post it.
    
        Default readers include ACs, SACs, and PCs. Override with the readers parameter.
    
        Args:
            venue_id: The venue identifier.
            submission_number: The paper number.
            comment_text: The comment text.
            readers: Who can see this comment. Defaults to ACs + SACs + PCs + Reviewers for the paper.
        """
        client = get_client()
        profile_id = client.profile.id
    
        note = _resolve_submission(client, venue_id, submission_number=submission_number)
        if not note:
            return f"Submission #{submission_number} not found."
    
        signer_id = None
        for role_prefix in ["Area_Chair_", "Reviewer_", "Senior_Area_Chair_"]:
            groups = client.get_groups(
                prefix=f"{venue_id}/Submission{submission_number}/{role_prefix}",
                signatory=profile_id,
            )
            if groups:
                signer_id = groups[0].id
                break
        if not signer_id:
            return f"Could not find your anonymous group for Submission #{submission_number}."
    
        if readers is None:
            readers = [
                f"{venue_id}/Program_Chairs",
                f"{venue_id}/Submission{submission_number}/Senior_Area_Chairs",
                f"{venue_id}/Submission{submission_number}/Area_Chairs",
                f"{venue_id}/Submission{submission_number}/Reviewers",
            ]
    
        payload = {
            "invitation": f"{venue_id}/Submission{submission_number}/-/Official_Comment",
            "signatures": [signer_id],
            "note_forum": note.id,
            "note_replyto": note.id,
            "readers": readers,
            "content": {"comment": {"value": comment_text}},
        }
        readers_display = "\n".join(f"  - {r}" for r in readers)
        preview = "\n".join([
            f"## Comment Preview for Submission #{submission_number}",
            f"**Signing as:** {signer_id}",
            f"**Visible to:**\n{readers_display}",
            f"\n{comment_text}",
        ])
        confirmation_id = pending_store.add(action="post_comment", payload=payload, preview=preview)
        return f"{preview}\n\n---\n**Confirmation ID:** `{confirmation_id}`\n\nCall `confirm_submission` with this ID to post the comment."

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/michaelqshieh/openreview-mcp'

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