Skip to content

## Implement: biblio pool promote — move project-local papers to a pool Phase 1

Implement: biblio pool promote — move project-local papers to a pool

Phase 1 of the pool ecosystem spec (docs/specs/biblio/pool-ecosystem.md).

What

Add a biblio pool promote command and MCP tool that moves papers from a project's local bib/ into a configured pool, so other projects can access them via the pool cascade.

Behavior

biblio pool promote --citekeys smith2024,doe2023
biblio pool promote --all-local   # promote all papers not already in pool

For each citekey: 1. Copy PDF from bib/articles/{ck}/ to pool's bib/articles/{ck}/ 2. Copy derivatives (docling, grobid, openalex) to pool's bib/derivatives/ 3. Copy/merge the BibTeX entry into pool's bib/srcbib/promoted.bib 4. Replace local PDF with symlink to pool copy 5. Report what was promoted

MCP tool

def biblio_pool_promote(
    citekeys: list[str],
    target: str = "",  # "personal" | "lab" | pool path; default: pool.path from config
    dry_run: bool = False,
) -> dict  # {"promoted": [...], "already_in_pool": [...], "errors": [...]}

Key files

  • packages/biblio/src/biblio/pool.py — add promote_to_pool() function
  • packages/biblio/src/biblio/mcp.py — add MCP wrapper
  • src/projio/mcp/biblio.py — add projio MCP tool
  • src/projio/mcp/server.py — register tool
  • packages/biblio/src/biblio/cli.py — add CLI subcommand

Reference

  • docs/specs/biblio/pool-ecosystem.md — full spec
  • packages/biblio/src/biblio/pool.py — existing pool code (link_project, sync_pool_symlinks)
  • packages/biblio/src/biblio/docling.py:resolve_docling_outputs — pool resolution pattern to follow