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
| Name | Required | Description | Default |
|---|---|---|---|
| venue_id | Yes | ||
| submission_number | Yes | ||
| comment_text | Yes | ||
| readers | No |
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."