{"id":"tonybotni-zotlink","name":"ZotLink","homepage":null,"repo_url":"https://github.com/TonybotNi/ZotLink","category":"devtools","subcategories":[],"tags":["mcp","zotero","bibliography","scraping","playwright","preprints","python","agent-integration"],"what_it_does":"ZotLink is a Python MCP server that connects to a local Zotero instance and saves open scholarly preprints (e.g., arXiv and selected open preprint servers) into Zotero, including metadata extraction and attaching PDFs (or validated link fallbacks). It uses browser automation (Playwright) when needed and provides MCP tools for checking Zotero status, listing collections, extracting metadata, and saving papers.","use_cases":["Automate ingest of open-access/open preprint papers into Zotero from URLs","Metadata extraction and enrichment (title/authors/abstract/DOI/subjects/comments) for arXiv and supported open preprint servers","Bulk or conversational workflows via Claude Desktop/other MCP clients to “save this paper to Zotero”","Add/maintain Zotero collections based on paper sources and authorship provenance"],"not_for":["Saving paywalled publisher articles (Nature/Science/IEEE Xplore/Springer, etc.) without an implemented cookie/bookmark auth flow","Production environments that require a documented, stable REST/SDK interface (this is MCP-focused)","Teams needing formal SLAs or explicit idempotency guarantees for repeated save operations"],"best_when":"You want an MCP-compatible agent toolchain that can take a paper URL, scrape/extract metadata (browser automation if required), and create/update Zotero items on the local machine where Zotero is installed.","avoid_when":"You need rigorous, documented security controls around cookies/auth (for planned publisher support) or you require formal guarantees about error recovery/idempotency and API rate limiting semantics.","alternatives":["Standalone Zotero plugins or translators for specific sources (arXiv translators, browser-based capture tools)","Crossref/Semantic Scholar APIs plus Zotero integration via client-side tooling","Other MCP servers for arXiv/Zotero (e.g., arxiv-mcp-server, zotero-mcp) combined with a separate Zotero client integration layer"],"af_score":62.2,"security_score":48.8,"reliability_score":33.8,"package_type":"mcp_server","discovery_source":["github"],"priority":"high","status":"evaluated","version_evaluated":null,"last_evaluated":"2026-03-30T13:43:16.295657+00:00","interface":{"has_rest_api":false,"has_graphql":false,"has_grpc":false,"has_mcp_server":true,"mcp_server_url":null,"has_sdk":false,"sdk_languages":[],"openapi_spec_url":null,"webhooks":false},"auth":{"methods":["Local MCP stdio/spawn client configuration via env variables (no external auth described)","Planned cookie/bookmark sync for auth-required sources"],"oauth":false,"scopes":false,"notes":"Authentication for Zotero is implicit via local connection (Zotero Desktop reachable at port 23119 per README). For paywalled publishers, cookie sync is listed as planned, with cookie helpers noted as stubs prepared."},"pricing":{"model":null,"free_tier_exists":false,"free_tier_limits":null,"paid_tiers":[],"requires_credit_card":false,"estimated_workload_costs":null,"notes":"No pricing information provided; appears to be an MIT open-source tool distributed via pip."},"requirements":{"requires_signup":false,"requires_credit_card":false,"domain_verification":false,"data_residency":[],"compliance":[],"min_contract":null},"agent_readiness":{"af_score":62.2,"security_score":48.8,"reliability_score":33.8,"mcp_server_quality":78.0,"documentation_accuracy":70.0,"error_message_quality":0.0,"error_message_notes":null,"auth_complexity":85.0,"rate_limit_clarity":20.0,"tls_enforcement":70.0,"auth_strength":45.0,"scope_granularity":20.0,"dependency_hygiene":50.0,"secret_handling":60.0,"security_notes":"Impacts local Zotero and uses browser automation (Playwright). No external network auth described; Zotero connection is local. Planned cookie/bookmark sync for paywalled sources is not implemented per README and cookie helpers are stubs, so auth risk is uncertain. Secret handling is not explicitly documented beyond env/config usage; because logs are written to a user home directory, risk depends on whether the implementation redacts tokens/cookies (not specified). Dependency hygiene and CVE status cannot be assessed from provided content.","uptime_documented":0.0,"version_stability":40.0,"breaking_changes_history":30.0,"error_recovery":65.0,"idempotency_support":"false","idempotency_notes":"README mentions “updateSession” and placeholder/title correction items are on the roadmap, but it does not state idempotency guarantees for repeated saves (e.g., de-dup behavior by DOI/arXiv id).","pagination_style":"none","retry_guidance_documented":true,"known_agent_gotchas":["Zotero must be running and reachable (README references port 23119).","Browser automation requires Playwright/Chromium; Linux may need extra system dependencies.","Some pages may only expose links; PDF attachment may fall back to link attachments.","Windows has noted limitations involving asyncio event loop nesting with the MCP event loop; may cause browser-mode issues.","No explicit rate limit documentation is provided for MCP tool usage."]}}