Skip to main content
Glama

get_submission

Retrieve complete submission details including title, abstract, authors, and keywords from OpenReview conferences using venue and submission identifiers.

Instructions

Get full details of a submission (title, abstract, authors, keywords, etc.).

Args: venue_id: The venue identifier (e.g., 'ICLR.cc/2025/Conference'). submission_id: The submission's note ID. Provide this OR submission_number. submission_number: The submission's paper number. Provide this OR submission_id.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
venue_idYes
submission_idNo
submission_numberNo

Implementation Reference

  • The handler for `get_submission` fetches submission data from OpenReview using the provided ID or number and formats it into a markdown string. It is registered as an MCP tool using `@mcp.tool()`.
    @mcp.tool()
    async def get_submission(
        venue_id: str,
        submission_id: str | None = None,
        submission_number: int | None = None,
    ) -> str:
        """Get full details of a submission (title, abstract, authors, keywords, etc.).
    
        Args:
            venue_id: The venue identifier (e.g., 'ICLR.cc/2025/Conference').
            submission_id: The submission's note ID. Provide this OR submission_number.
            submission_number: The submission's paper number. Provide this OR submission_id.
        """
        client = get_client()
    
        if submission_id:
            note = client.get_note(submission_id)
        elif submission_number is not None:
            notes = client.get_all_notes(
                invitation=f"{venue_id}/-/Submission",
                number=submission_number,
            )
            if not notes:
                return f"No submission found with number {submission_number} in {venue_id}."
            note = notes[0]
        else:
            return "Please provide either submission_id or submission_number."
    
        content = note.content
        title = content.get("title", {}).get("value", "Untitled")
        abstract = content.get("abstract", {}).get("value", "N/A")
        authors = content.get("authors", {}).get("value", [])
        keywords = content.get("keywords", {}).get("value", [])
    
        date_str = ""
        if note.cdate:
            dt = datetime.fromtimestamp(note.cdate / 1000, tz=timezone.utc)
            date_str = dt.strftime("%Y-%m-%d")
    
        lines = [
            f"# #{note.number}: {title}",
            f"",
            f"**ID:** {note.id}",
            f"**Forum:** https://openreview.net/forum?id={note.forum}",
        ]
        if date_str:
            lines.append(f"**Submitted:** {date_str}")
        if authors:
            lines.append(f"**Authors:** {', '.join(authors)}")
        if keywords:
            lines.append(f"**Keywords:** {', '.join(keywords)}")
    
        lines.append(f"\n## Abstract\n\n{abstract}")
    
        skip_keys = {"title", "abstract", "authors", "authorids", "keywords", "pdf", "venueid",
                     "venue", "TLDR", "_bibtex"}
        for key, val in content.items():
            if key not in skip_keys and isinstance(val, dict) and "value" in val:
                lines.append(f"\n**{key}:** {val['value']}")
    
        return "\n".join(lines)

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