| name | bip |
| description | Unified guidance for using the bipartite reference library CLI. Use when searching for papers, managing the library, or exploring literature via S2/ASTA. |
Bip Reference Library
A CLI tool for managing academic references with local storage and external paper search.
Repository: Configured via nexus_path in ~/.config/bip/config.json
⚠️ CRITICAL: Local-First Search Policy
ALWAYS search locally before using external APIs. NEVER call ASTA without explicit user permission.
The nexus library has ~6000 papers. Most relevant papers are already there.
Required Search Order
-
Local search FIRST (always do this):
bip search "author keyword"
-
If bip search fails (e.g., schema error), rebuild the database:
bip rebuild --force
Then retry the search.
-
Only if not found locally AND user confirms, use ASTA:
"I couldn't find that paper in the local library. Would you like me to search Semantic Scholar (ASTA)?"
DO NOT call bip asta, mcp__asta__*, or any external API without asking first.
Argument Handling
When invoked with arguments like /bip find <query> or /bip <query>:
- Always search local library first with
bip search "<query>"
- If local search fails with an error, rebuild the database and retry
- Only after exhausting local options, ask user if they want to search externally
- For title searches, use the full title; for topic searches, use key terms
Proactive Concept Discovery
When discussing papers, always look for opportunities to create concept nodes:
- Papers that introduce new methods, models, or techniques (e.g., "categorical Jacobian")
- Papers that apply existing concepts in novel ways
- Connections between papers through shared concepts
Suggest creating concepts when you notice:
- A named method or algorithm being introduced
- A technique being reused across multiple papers
- A bridge between the user's work and external literature
Quick Reference
| Task | Command |
|---|
| Search local library | bip search "query" |
| Search by author | bip search -a "LastName" (exact last name, AND logic) |
| Search by title | bip search -t "keywords" or --title |
| Search by year | bip search --year 2024 or --year 2020: |
| Search by venue | bip search --venue "Nature" (partial match) |
| Lookup by DOI | bip search --doi "10.1234/..." |
| Combined search | bip search "topic" -a "Author" --year 2020: |
| Semantic search | bip semantic "query" |
| Get paper details | bip get <id> |
| Add paper to collection | bip s2 add DOI:10.1234/... |
| Find literature gaps | bip s2 gaps |
| Fast paper search (external) | bip asta search "query" |
| Find text snippets | bip asta snippet "query" |
| Create concept | bip concept add <id> --name "Name" |
| Link paper to concept | bip edge add -s <paper> -t concept:<concept> -r <type> -m "summary" |
| Papers for concept | bip concept papers <concept-id> |
| Concepts for paper | bip paper concepts <paper-id> |
| Import projects from config | bip project import <file> |
| Import with concept edges | bip project import <file> --link-concepts |
Search Strategy
Field-Specific Search Flags
Use --author and --year flags for precise filtering:
bip search --author "Yu" --author "Bloom"
bip search -a "Tim Yu" -a "Bloom"
bip search -a "Yu, Timothy"
bip search --year 2024
bip search --year 2020:2024
bip search --year 2022:
bip search --year :2020
bip search "deep mutational scanning" --author "Bloom" --year 2023:
Multiple authors use AND logic - all must appear in the paper.
Author matching rules:
- Single word (e.g.,
-a "Yu") → exact last name match (won't match "Yujia")
- Two+ words (e.g.,
-a "Tim Yu") → exact last name + first name prefix
- Comma format (e.g.,
-a "Yu, Tim") → same as above
Query Formulation Tips
Keep queries short and specific - Long conceptual queries perform poorly:
- Bad:
"correlation between BME criterion and Felsenstein likelihood around correct tree"
- Good:
"BME Felsenstein likelihood phylogeny" or "Bruno WEIGHBOR likelihood"
Use --author flag instead of embedding names in query - Precise last name matching:
- Good:
bip search -a "Yu" -a "Bloom" --year 2022: (exact last name match)
- Good:
bip search -a "Tim Yu" -a "Bloom" (first prefix + exact last name)
- Bad:
bip search "Tim Yu Bloom" (keyword search is substring-based)
Use specific method/algorithm names:
"WEIGHBOR", "FASTME", "neighbor joining" rather than general descriptions
Systematic Search Workflow
For finding a specific paper or result:
-
Local library first (fastest, already curated):
bip search -a "AuthorName" --year 2020:
bip search "topic" -a "Author"
bip search "author topic"
bip semantic "conceptual description"
-
External keyword search with author names:
bip asta search "AuthorName keyword1 keyword2" --limit 20 --human
-
Broaden if needed - remove author, try synonyms:
bip asta search "minimum evolution likelihood" --human
bip asta search "distance method maximum likelihood phylogeny" --human
-
Citation tracing - if you find a related paper, check what cites it:
bip asta citations DOI:10.xxxx/yyyy --limit 50 --human
-
MCP tools directly - for more control over fields and filters:
mcp__asta__search_papers_by_relevance with specific date ranges
mcp__asta__get_citations with publication_date_range filter
Snippet Search Caveats
The bip asta snippet command can be slow and unreliable (timeouts are common). Alternatives:
- Use keyword search first to find candidate papers
- Use MCP
mcp__asta__snippet_search directly with smaller limits
- If snippet times out, fall back to
bip asta search
S2 vs ASTA: When to Use Which
Both access Semantic Scholar's paper database but through different APIs:
| Use Case | Command | Why |
|---|
| Add paper to collection | bip s2 add | Only S2 can modify local library |
| Find literature gaps | bip s2 gaps | Analyzes your collection |
| Explore without adding | bip asta * | Faster, read-only |
| Find text snippets in papers | bip asta snippet | Unique to ASTA |
| Fast paper search | bip asta search | 10x faster rate limit |
| Get citations/references | Either works | ASTA is faster |
Rule of thumb: Use bip asta for exploration, bip s2 when you want to modify your library.
See api-guide.md for detailed comparison.
Common Workflows
Find a Paper
-
Search local library first:
bip search "Schmidler phylogenetics"
bip semantic "importance sampling MCMC"
-
Get PDF path for a result:
bip get <id>
-
If not in library, search externally:
bip asta search "phylogenetic inference"
Update Library from Paperpile
- Export from Paperpile (JSON format) to ~/Downloads
- Find the export file:
ls -t ~/Downloads/Paperpile*.json | head -1
- Import:
bip import --format paperpile "<path>"
- Optionally delete the export file after confirming success
Explore Literature
-
Search by topic:
bip asta search "variational inference phylogenetics" --limit 20
-
Find specific text passages:
bip asta snippet "Bayesian phylogenetic inference"
-
Trace citations:
bip asta citations DOI:10.1093/sysbio/syy032
bip asta references DOI:10.1093/sysbio/syy032
-
Add interesting papers to your collection:
bip s2 add DOI:10.1093/sysbio/syy032
See workflows.md for detailed workflow instructions.
Output Format
All commands output JSON by default. Add --human for readable format:
bip asta search "phylogenetics" --human
bip s2 lookup DOI:10.1234/example --human
Paper ID Formats
Both S2 and ASTA accept these identifier formats:
DOI:10.1093/sysbio/syy032
ARXIV:2106.15928
PMID:19872477
CorpusId:215416146
- Raw Semantic Scholar ID (40-char hex)
Concept Nodes (Knowledge Graph)
Build a knowledge graph by creating concepts and linking papers to them.
Create Concepts
bip concept add somatic-hypermutation \
--name "Somatic Hypermutation" \
--aliases "SHM,shm" \
--description "Process by which B cells diversify antibody genes"
bip concept list --human
bip concept get somatic-hypermutation --human
Link Papers to Concepts
bip edge add -s Halpern1998-yc -t concept:mutation-selection-model -r introduces \
-m "Foundational paper defining the mutation-selection model"
bip edge add -s Yaari2013-dg -t concept:somatic-hypermutation -r models \
-m "Introduces S5F model for SHM targeting"
Note: Use concept: prefix for concept targets, project: for project targets.
Standard Relationship Types
| Type | When to Use |
|---|
introduces | Paper first presents or defines this concept |
applies | Paper uses concept as a tool or method |
models | Paper creates computational/mathematical model |
evaluates-with | Paper uses concept for evaluation/benchmarking |
critiques | Paper identifies limitations or problems |
extends | Paper builds upon or extends the concept |
Query the Knowledge Graph
bip concept papers somatic-hypermutation --human
bip concept papers somatic-hypermutation --type introduces
bip paper concepts Halpern1998-yc --human
Manage Concepts
bip concept update somatic-hypermutation --description "Updated description"
bip concept delete unused-concept
bip concept delete old-concept --force
bip concept merge shm somatic-hypermutation --human
Troubleshooting
Snippet Search Timeouts
bip asta snippet frequently times out with "context deadline exceeded". Workarounds:
- Reduce limit:
--limit 5 instead of default
- Use MCP directly:
mcp__asta__snippet_search with small limit
- Fall back to keyword search:
bip asta search is more reliable
- Retry once - sometimes it's transient
No Results Found
If searches return nothing relevant:
- Check spelling of author names and technical terms
- Simplify query - fewer terms, more common synonyms
- Try both local and external:
bip search "topic"
bip semantic "topic"
bip asta search "topic"
- Check date filters - paper may be too old/new for range
Paper Not Found by ID
If bip get <id> or bip asta paper <id> fails:
- Verify ID format:
DOI:10.xxxx/yyyy (include prefix)
- Try alternate IDs: Same paper may have DOI, PMID, arXiv ID
- Search by title instead:
bip asta search "exact paper title"
SQL Schema Errors
If you see errors like no such column: pmid or similar schema mismatches:
bip rebuild --force
The SQLite database is ephemeral and rebuilt from the JSONL source of truth. Schema changes require deleting and rebuilding.
Slow Performance
bip s2 commands are rate-limited to 1 req/sec
- Use
bip asta for bulk exploration (10 req/sec)
- Run searches in parallel when independent