{"ok":true,"site":{"host":"papertrail-platform.vercel.app","url":"https://papertrail-platform.vercel.app/","type":"live","desc":"PaperTrail exposes your literature-review workspace to AI agents through WebMCP. You curate and judge; your agent searches, annotates, compares, and drafts — on the same canvas, with full provenance.","tools":[{"name":"search_literature","kind":"answer","impl":"imperative","description":"Search OpenAlex (250M+ scholarly works) by keyword. Results are staged in the app Inbox panel so the human can see them (a new search replaces the previous staging); nothing is added to the workspace until add_papers is called. Results include abstract snippets — usually enough to pick the best papers and write grounded summary notes without extra calls.","title":"Search literature","annotations":{"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Search phrase, e.g. \"LLM agent communication failure\""},"max_results":{"type":"integer","minimum":1,"maximum":15,"description":"Default 8."},"from_year":{"type":"integer","description":"Only include works published this year or later."}},"required":["query"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_paper_details","kind":"answer","impl":"imperative","description":"Full record for one paper: abstract, topics, venue, citations, DOI, plus Semantic Scholar enrichment when available (one-sentence TLDR, open-access PDF, influential citation count). Works for ids already in the workspace, in the Inbox, or any OpenAlex work id (W…).","title":"Get paper details","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"paper_id":{"type":"string","description":"OpenAlex work id, e.g. W2124364966"}},"required":["paper_id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_citation_contexts","kind":"answer","impl":"imperative","description":"How other papers actually cite this work: verbatim sentences from citing papers with intents (methodology/background/result), via Semantic Scholar. Use it to characterize a paper accurately in comparisons and related-work drafts — what claim of the paper really travels in the literature.","title":"Read citation contexts","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"paper_id":{"type":"string"},"max_citations":{"type":"integer","minimum":3,"maximum":20,"description":"Default 8."}},"required":["paper_id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_workspace_state","kind":"answer","impl":"imperative","description":"The human and you are looking at the same canvas. Call this first: it shows every section, paper, note count, and artifact — plus what the human currently has selected in the inspector (human_selection), so you can react to what they are reading.","title":"Read workspace state","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_artifact","kind":"answer","impl":"imperative","description":"Read the full current text of one artifact (comparison table, gap analysis, related-work draft) by id. This returns what the canvas holds NOW — including any edits the human made after you published. Read it before revising anything.","title":"Read an artifact","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"artifact_id":{"type":"string","description":"From get_workspace_state artifacts[].id"}},"required":["artifact_id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"add_papers","kind":"act","impl":"imperative","description":"Add papers from the Inbox (or by OpenAlex id) to a section of the canvas. The cards appear immediately for the human. Optionally attach per-paper notes via \"notes\" — one entry per paper_id, each grounded in that paper's abstract snippet (from search results) or details.","title":"Add papers to workspace","inputSchema":{"type":"object","properties":{"paper_ids":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":10},"section":{"type":"string","description":"Section title or id. Defaults to the first section."},"notes":{"type":"array","description":"Optional per-paper notes. Match paper_id to the papers you are adding.","maxItems":10,"items":{"type":"object","properties":{"paper_id":{"type":"string"},"type":{"type":"string","enum":["summary","method","finding","limitation","connection","question"]},"content":{"type":"string","maxLength":2000}},"required":["paper_id","type","content"]}}},"required":["paper_ids"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"move_papers","kind":"act","impl":"imperative","description":"Move one or more papers to another section of the canvas, e.g. promoting papers you judged relevant to \"Reading\".","title":"Move papers between sections","inputSchema":{"type":"object","properties":{"paper_ids":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":20},"to_section":{"type":"string","description":"Target section title or id."}},"required":["paper_ids","to_section"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"remove_papers","kind":"act","impl":"imperative","description":"Remove papers from the canvas. Destructive: the human sees removals immediately and can undo only by re-adding.","title":"Remove papers from workspace","inputSchema":{"type":"object","properties":{"paper_ids":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":20}},"required":["paper_ids"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"annotate_paper","kind":"act","impl":"imperative","description":"Attach a structured note (summary | method | finding | limitation | connection | question) to a paper. Notes render on the canvas as first-class cards the human can edit or delete. Ground every note in the paper's abstract or details — do not speculate.","title":"Write a structured note","inputSchema":{"type":"object","properties":{"paper_id":{"type":"string"},"type":{"type":"string","enum":["summary","method","finding","limitation","connection","question"]},"content":{"type":"string","minLength":1,"maxLength":2000}},"required":["paper_id","type","content"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"create_comparison","kind":"act","impl":"imperative","description":"Returns structured material (abstract excerpts, notes, metadata) for 2-6 papers so you can build a comparison. Analyze the material, then publish the table with save_artifact (kind: \"comparison\").","title":"Gather comparison material","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"paper_ids":{"type":"array","items":{"type":"string"},"minItems":2,"maxItems":6},"dimensions":{"type":"array","items":{"type":"string"},"maxItems":8,"description":"Suggested axes, e.g. [\"method\",\"benchmarks\",\"key finding\",\"limitations\"]. You choose the final axes."}},"required":["paper_ids"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"find_connections","kind":"answer","impl":"imperative","description":"Computes pairwise relationships between workspace papers: shared foundational references, shared authors, shared topics. Deterministic citation-graph analysis, not guesswork. Defaults to all papers.","title":"Find citation connections","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"paper_ids":{"type":"array","items":{"type":"string"},"minItems":2,"maxItems":12}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"identify_gaps","kind":"act","impl":"imperative","description":"Statistical gap analysis of the current workspace: topic frequency, co-occurrence sparsity, year and venue spread. Returns candidate gaps worth a targeted follow-up search.","title":"Identify corpus gaps","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"draft_related_work","kind":"act","impl":"imperative","description":"Gathers every paper and note in a section (default: all) as ground-truth material for writing a cited related-work section. Write the prose from ONLY this material, then publish with save_artifact (kind: \"draft\").","title":"Gather draft material","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"section":{"type":"string","description":"Section title or id. Defaults to all sections."},"style":{"type":"string","enum":["related-work","survey","blog"],"description":"Default related-work."},"max_papers":{"type":"integer","minimum":2,"maximum":20}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"save_artifact","kind":"act","impl":"imperative","description":"Publish markdown you wrote (comparison table, gap analysis, related-work draft) as an artifact on the canvas. The human sees it immediately, can edit it, and can inspect which tool calls produced it. To revise an existing artifact after the human edits it: get_artifact first, incorporate their changes, then call this again with the same artifact_id.","title":"Publish artifact to canvas","inputSchema":{"type":"object","properties":{"artifact_id":{"type":"string","description":"To UPDATE an existing artifact in place (preserving its position); omit to create a new one."},"kind":{"type":"string","enum":["comparison","gaps","draft","summary"]},"title":{"type":"string","maxLength":120},"markdown":{"type":"string","minLength":1,"maxLength":20000},"sources":{"type":"array","items":{"type":"string"},"description":"Paper ids the content is grounded in."}},"required":["kind","title","markdown"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"suggest_related","kind":"act","impl":"imperative","description":"Given a seed paper (default: most recently added), suggest related work — Semantic Scholar recommendations when available, OpenAlex relatedness + citations otherwise — excluding anything already in the workspace. Suggestions are staged in the Inbox (a new staging replaces the previous one).","title":"Suggest related papers","annotations":{"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"paper_id":{"type":"string"},"limit":{"type":"integer","minimum":1,"maximum":10}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"export_workspace","kind":"act","impl":"imperative","description":"Export the full workspace as markdown (survey skeleton with notes and artifacts), BibTeX, or JSON. JSON is the shareable snapshot (activity log excluded). Large exports are truncated in the result — the human can always download the full file from the Export menu.","title":"Export workspace","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"format":{"type":"string","enum":["markdown","bibtex","json"]}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Health & Education","favicon":"/favicons/papertrail-platform.vercel.app.svg","apiSurface":"spec","toolCount":16}}