diff --git a/README.md b/README.md index 5cc6939a..4307dcdf 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ License -**PaperDebugger** is an AI-powered academic writing assistant that helps researchers debug and improve their LaTeX papers with intelligent suggestions and seamless Overleaf integration. It is powered by a custom MCP-based orchestration engine that simulates the full academic workflow **Research → Critique → Revision**.
+**PaperDebugger** is an AI-powered academic writing assistant that helps researchers debug and improve their research papers with intelligent suggestions and seamless Overleaf integration, without leaving the editor. It is powered by a custom MCP-based orchestration engine that simulates the full academic workflow **Research → Critique → Revision**.
This enables multi-step reasoning, reviewer-style critique, and structured revision passes beyond standard chat-based assistance.
@@ -25,11 +25,11 @@ This enables multi-step reasoning, reviewer-style critique, and structured revis ## 🌐 Social Media & Community Groups Our team is actively working to improve long-term reliability, hoping to iron out issues this month. Thank you for your patience.
-Stay connected with the PaperDebugger community! Join our [Discord](https://discord.gg/WwTMzzt9xD) or WeChat channels below for updates, announcements, and support. +Stay connected with the PaperDebugger community! Join our [Discord](https://discord.gg/WwTMzzt9xD) or WeChat channels for updates, announcements, and support.
- - + +
@@ -168,13 +168,15 @@ cp .env.example .env ``` #### 4. Custom MCP Backend Orchestration [OPTIONAL FOR LOCAL DEV] -Our enhanced orchestration backend, [**XtraMCP**](https://github.com/4ndrelim/academic-paper-mcp-server), is partially in-production but currently closed-source while under active development. If you wish to learn more about XtraMCP backend logic, refer to [/demo/xtramcp/readme.md](./demo/xtramcp/readme.md).
+Our enhanced orchestration backend, [**XtraMCP**](https://github.com/4ndrelim/academic-paper-mcp-server), is partially deployed in-production, with selected components enabled to **balance stability and operational cost** at this stage. It is still under active development and remains closed-source for now. + +To understand the backend orchestration logic and view the currently available and gated features, as well as planned capabilities, refer to [/demo/xtramcp/readme.md](./demo/xtramcp/readme.md).
You can still self-host PaperDebugger without it; all core features (chat, formatting, edits, comments) work normally. Connecting to XtraMCP unlocks: -- research-mode agents, +- research-mode agents (with on-demand search for latest publications), - structured reviewer-style critique, -- domain-specific revisions tailored to academic writing powered by [XtraGPT](https://huggingface.co/Xtra-Computing/XtraGPT-14B) models. +- domain-specific revisions tailored for academic writing powered by [XtraGPT](https://huggingface.co/Xtra-Computing/XtraGPT-14B) models. We plan to **open-source XtraMCP** once the API stabilizes for community use. diff --git a/demo/xtramcp/readme.md b/demo/xtramcp/readme.md index f37d0afe..ec970988 100644 --- a/demo/xtramcp/readme.md +++ b/demo/xtramcp/readme.md @@ -1,36 +1,38 @@ -# XtraMCP Server – Orchestration Prompts +# XtraMCP Orchestration Layer XtraMCP is a **custom MCP-based orchestration server** that powers PaperDebugger’s higher-level workflows: -- 🧑‍🔬 **Researcher** – find and position your work within the literature -- 🧑‍⚖️ **Reviewer** – critique drafts like a top-tier ML reviewer +- 🧑‍🔬 **Researcher** – find relevant papers and position your work within the literature +- 🧑‍⚖️ **Reviewer** – critique drafts like a top-tier ML conference reviewer - ✍️ **Enhancer** – perform fine-grained, context-aware rewrites - 🧾 **Conference Formatter** (WIP) – adapt drafts to conference templates (NeurIPS, ICLR, AAAI, etc.) This document describes the core tools exposed by XtraMCP and how they combine into these workflows. -> **Note:** XtraMCP is currently **closed-source** while the API and deployment story stabilize. +> **Note:** XtraMCP (see [4ndrelim/academic-paper-mcp-server](https://github.com/4ndrelim/academic-paper-mcp-server)) is currently **closed-source** while the API and development stabilize. > PaperDebugger runs fully without it; connecting XtraMCP unlocks the advanced research/review pipelines described here. --- ## Tool Overview -| Tool Name | Role | Purpose | Primary Data Source | -|---------------------------|-----------|-----------------------------------------------------------------|-----------------------------| -| `search_relevant_papers` | Researcher | Fast semantic search over recent CS papers in a local vector DB, enhanced with semantic re-ranker module | Local vector database | -| `deep_research` | Researcher | Multi-step literature synthesis & positioning of your draft | Local DB + retrieved papers | -| `online_search_papers` | Researcher | Online search over external academic corpora | OpenReview + arXiv | -| `review_paper` | Reviewer | Conference-style structured review of a draft | Your draft | -| `enhance_academic_writing`| Enhancer | Context-aware rewriting and polishing of selected text | Your draft + XtraGPT | -| `get_user_papers`| Misc | Fetch all papers, alongside description, published (OpenReview) by a specific user identified by email | User's email address +| Tool Name | Role | Purpose | Primary Data Source | Presently Deployed | +|---------------------------|-----------|-----------------------------------------------------------------|--------------------------------|----------------------| +| `search_relevant_papers` | Researcher | Fast semantic search over recent CS papers in a local vector DB, enhanced with semantic re-ranker module | Local DB | Yes | +| `deep_research` | Researcher | Multi-step literature synthesis & positioning of your draft | Local DB + retrieved papers analysis | *Temporarily Disabled* | +| `online_search_papers` | Researcher | Online search over external academic corpora | OpenReview + arXiv | Yes (*Partially*) with arXiv | +| `review_paper` | Reviewer | Conference-style structured review of a draft | Your draft + section-level review (static & semantic) | Yes (*Partially*) — Title, Abstract, Intro — to balance operational cost. | +| `verify_citations` | Reviewer | Ensure citations are grounded, valid, and traceable | Your draft's bibliography | *Coming Soon*! | +| `enhance_academic_writing`| Enhancer | Context-aware rewriting and polishing of selected text | Your draft + XtraGPT | *Temporarily Disabled* | +| `get_user_papers` | Misc / Researcher| Fetch all published papers with description, by a specific user | OpenReview | *Disabled* (requires auth; easy to enable with local deployment) | +| `search_user` | Misc | Fetch user's profile, including info such as publications, co-authors | OpenReview | *Disabled* (requires auth; easy to enable with local deployment)| --- ## 1. `search_relevant_papers` **Purpose:** -Search for similar or relevant papers by keywords or extracted concepts against a **local database of academic papers**.
This tool uses semantic search with vector embeddings to find the most relevant results, enhanced with a re-ranker module to better capture nuance. It is fast and the default and recommended tool for paper searches. +Search for similar or relevant papers by keywords or extracted concepts against a **local corpus of ~800,000 academic papers**.
This tool uses semantic search with vector embeddings to find the most relevant results, enhanced with a re-ranker module to better capture nuance. It is fast and the default and recommended tool for paper searches. **How it works:** @@ -48,7 +50,7 @@ Search for similar or relevant papers by keywords or extracted concepts against ## 2. `deep_research` **Purpose:** -Given a **research topic or draft paper**, perform multi-step literature exploration and synthesis. Summarize their findings, and provide insights on similarities and differences to assist in the research process. +Given a **research topic or draft paper**, perform multi-step literature exploration and synthesis. Summarize their findings, and provide insights on similarities and differences to assist in the research process. This helps you to position your work. **How it works:** @@ -62,7 +64,7 @@ Given a **research topic or draft paper**, perform multi-step literature explora **Typical usage:** - “deep_research to compare my draft to recent work on retrieval-augmented generation.” -- “For this topic, deep_research 5-10 relevant papers and explain where the open gaps are.” +- “For this topic, deep_research 5-10 relevant papers and explain where the open gaps are and what I can adopt.” --- @@ -117,8 +119,26 @@ Analyze and review a draft against the standards of **top-tier ML conferences** - “review_paper on method clarity and experimental rigor.” --- +## 5. `verify_citations` -## 5. `enhance_academic_writing` +**Purpose:** +Verify that citations in your draft are valid, grounded, and traceable, helping reduce the risk of desk rejection due to incorrect or unverifiable references. + +**How it works**: +- Parses your bibliography and in-text citations. +- Verifies that cited papers, preprints, and URLs: + - exist and are reachable, + - correspond to real publications or preprints, + - match their claimed titles/authors/venues where possible. +- Flags any issues or un-verifiable sources. + +Typical usage: +- “verify_citations” +- “Check whether any citations in this draft are invalid or unverifiable.” + +--- + +## 6. `enhance_academic_writing` **Purpose:** Suggest **context-aware academic writing enhancements** for selected text. @@ -137,7 +157,7 @@ Suggest **context-aware academic writing enhancements** for selected text. - "enhance_academic_writing this paragraph to be clearer and more concise, preserving all technical details.” - "enhance_academic_writing the abstract to be suitable for NeurIPS.” -## 6. `get_user_papers` +## 7. `get_user_papers` **Purpose:** Retrieve **all papers authored by a given user** (OpenReview), identified by email. @@ -152,7 +172,7 @@ Useful for quickly assembling a researcher’s publication list or grounding con - “get_user_papers for in summary mode.” - “Retrieve all publications by this researcher and then compare my draft using deep_research.” -## 7. Conference Formatter (WIP) +## 8. Conference Formatter (WIP) Upcoming workflows will: diff --git a/webapp/_webapp/src/components/message-entry-container/tools/jsonrpc.tsx b/webapp/_webapp/src/components/message-entry-container/tools/jsonrpc.tsx index d5603785..90537584 100644 --- a/webapp/_webapp/src/components/message-entry-container/tools/jsonrpc.tsx +++ b/webapp/_webapp/src/components/message-entry-container/tools/jsonrpc.tsx @@ -12,59 +12,22 @@ type JsonRpcProps = { }; export const JsonRpc = ({ functionName, jsonRpcResult, preparing, animated }: JsonRpcProps) => { - const [isCollapsed, setIsCollapsed] = useState(false); if (preparing) { return (
-

{functionName}

+

{"Calling " + functionName}

); } - const toggleCollapse = () => { - setIsCollapsed(!isCollapsed); - }; - return (
-
+

{functionName}

- -
- -
- {jsonRpcResult.result && ( -
- - {jsonRpcResult.result.content?.map((content) => content.text).join("\n") || ""} - -
- )} - - {jsonRpcResult.error &&
{jsonRpcResult.error.message}
}
); diff --git a/webapp/_webapp/src/components/message-entry-container/tools/tools.tsx b/webapp/_webapp/src/components/message-entry-container/tools/tools.tsx index 3357c169..96752df2 100644 --- a/webapp/_webapp/src/components/message-entry-container/tools/tools.tsx +++ b/webapp/_webapp/src/components/message-entry-container/tools/tools.tsx @@ -18,16 +18,18 @@ type ToolsProps = { // define a const string list. const XTRA_MCP_TOOL_NAMES = [ - // researcher tools + // RESEARCHER TOOLS "search_relevant_papers", "online_search_papers", - "deep_research", - // reviewer tools + // "deep_research", + // REVIEWER TOOLS "review_paper", - // enhancer tools - "enhance_academic_writing", - // misc - "get_user_papers", + // "verify_citations" + // ENHANCER TOOLS + // "enhance_academic_writing", + // OPENREVIEW ONLINE TOOLS + // "get_user_papers", + // "search_user" ]; export default function Tools({ messageId, functionName, message, error, preparing, animated }: ToolsProps) {