Reported issues for doiget Desktop Extension
Pod holds 20 of 39 GitHub reports that passed its relevance review. This can include external user reports, maintainer-confirmed bugs, and concrete feature gaps. Treat them as evidence to inspect, not a count of distinct defects.
Back to doiget Desktop Extension.
Most discussed
Discovery-oriented features for agent-driven literature search (paper_search, paper_text, survey macro, MCP loop)
Motivation — agent-driven research-question discovery, not just DOI→PDF
Using doiget from an LLM agent to actually find the question (not just fetch a known DOI), the loop I want to self-complete is:
search → triage → expand(citations) → fetch → read → map/gap-analysis
Today doiget is excellent at the back half (fetch/batch/graph/bib/csl/serve/capabilities),
but the front half assumes you already know the DOIs. The gaps below are what would let an agent run
the whol
Read the thread · 2026-06-04 · closed · 3 comments
mcp: align tool output shapes with the CLI --mode json bodies (#204 / #205 mirror)
Purpose
#204 added --mode json bodies for the six human-table CLI commands and #205 added the ERRORS.md §3 JSONL shape for batch. The doiget-mcp tools (doiget_info, doiget_search, doiget_audit_log, doiget_batch_fetch, etc.) each have their own output schema today; they predate the CLI JSON bodies and may diverge in field names / nesting from the CLI surface.
Consistency matters because a single LLM agent often consults both (doiget serve for in-session work and `doiget cli
Read the thread · 2026-05-20 · closed · 3 comments
bug(cli): the human denial help suggests both trust flags unconditionally, while the machine path computes which one actually covers the host
Observed on doiget 0.8.9 against the #443/#461 case:
$ doiget fetch 10.1109/tsp.2018.2812747
error[CAPABILITY_DENIED]: … redirect target strathprints.strath.ac.uk not in allowlist …
= help: that host is not on the allowlist yet; widen it in …/config.toml
[network] trust_academic_repos = true # 15 curated academic suffixes
[network] trust_oa_registries = true # DOAJ, SciELO, Zenodo, OSF, HAL
[[network.additional_hosts]] host = "strathprints.strath.ac.uk
[Read the thread](https://github.com/QAtlasHub/doiget/issues/478) · 2026-08-25 · closed · 2 comments
### oa-publisher allowlist omits major physics OA hosts (APS, SciPost, IOP) — 7/30 niche papers fall to metadata-only
## Summary
Dogfooding a real **finite-temperature MPS** literature collection on a
university box (via the now-working citation graph, #187) batch-fetched 30
DOIs that OpenAlex reports as Open Access. **24 succeeded; 7 were denied**
with `error[CAPABILITY_DENIED]` — the OA PDF *was discovered* but its host
is not in `oa_publisher_allowlist()`
(`crates/doiget-core/src/http.rs`) / `docs/REDIRECT_ALLOWLIST.md` §3.4.
Denied hosts (real Unpaywall `best_oa_location` targets):
| host | count | natur
[Read the thread](https://github.com/QAtlasHub/doiget/issues/193) · 2026-05-18 · closed · 2 comments
### cleanup batch (LOW): s2 dead api_key, dry_run .expect() panics, missing serde(deny_unknown_fields), SCOPE.md count mismatch
**Category: F/D — low-severity cleanup batch** (grouped like #123)
1. **core** `crates/doiget-core/src/sources/s2.rs:52-53` — `api_key` is `#[allow(dead_code)]`, never sent. Users with a Semantic Scholar key are silently rate-limited to the anonymous tier. Wire the header like APS, or document + warn.
2. **core** `crates/doiget-core/src/dry_run.rs:143,163` — `.expect()` on allowlist lookups panics `doiget plan` if a source key is ever renamed. Convert to `Result<FetchPlan, FetchError>`.
3. **mc
[Read the thread](https://github.com/QAtlasHub/doiget/issues/156) · 2026-05-17 · closed · 2 comments
### Four shipped MCP tools have no entry in MCP_TOOLS.md
Four tools ship in every release binary and have no entry in `docs/MCP_TOOLS.md`:
- `doiget_annotate`
- `doiget_batch_from_bibliography`
- `doiget_paper_tex_source`
- `doiget_tag`
## How this was measured
`doiget serve` run from an installed npm package, `tools/list` compared against the
tool table in `MCP_TOOLS.md` (the rows matching `^| \`doiget_[a-z_]+\``):
live in a shipped oa-only,citation build : 21 (22 after #552) documented in the tool table : 18 explicitly refused,
Read the thread · 2026-08-27 · closed · 1 comment
Ship doiget as a Claude Code plugin: self-hosted marketplace first, then the community catalog
Mechanics verified 2026-08-26 against the installed claude-plugins-official marketplace on disk and the official docs.
Why this and not just claude mcp add
A plugin makes installation two lines with no binary handling, and it can carry skills, agents and commands alongside the MCP server — which is where domain workflows (systematic review / PRISMA, etc.) would eventually be delivered.
/plugin marketplace add QAtlasHub/doiget
/plugin install doiget@doiget
Files to add
At t
Read the thread · 2026-08-25 · open · 1 comment
feat(registry): the MCP Registry now documents cargo AND mcpb — the source-only entry can carry packages
server.json has no packages array, so io.github.QAtlasHub/doiget is discoverable in the registry but not installable from it. Verified live:
$ curl 'https://registry.modelcontextprotocol.io/v0/servers?search=doiget'
name: io.github.QAtlasHub/doiget | version: 0.8.9 | packages: (none)
The reason is recorded in release-plz.yml:
the live MCP Registry does not yet accept the
cargoregistry type (400 "unsupported registry type: cargo"), though the 2025-12-11 schema lists
Read the thread · 2026-08-25 · closed · 1 comment
Most recent
bug(transport): in a metadata-without-citation build, every Tier-2 optional source fails UnknownSource
Found while wiring OpenAlex into the optional chain for #461. Not fixed there because it is a different defect with its own blast radius.
The gates disagree
The Tier-2 sources are gated on metadata:
# crates/doiget-core/Cargo.toml
metadata = []
citation = ["metadata"]
resolve_optional_chain is #[cfg(feature = "metadata")], and so are DataCite, Europe PMC, OpenAIRE, HAL and CORE.
Their transport gate is not:
// crates/doiget-cli/src/commands/fetch.rs:267
#[c
[Read the thread](https://github.com/QAtlasHub/doiget/issues/516) · 2026-08-26 · closed · 0 comments
### docs/INTEGRATION: all six host guides are Phase 3 placeholders that tell users to stop and wait — for a phase that shipped
A user who follows `README.md:51` to the host-integration guides is actively told not to proceed.
## Measured 2026-08-26
Every file in `docs/INTEGRATION/` carries the same banner and two unfilled TODOs:
claude-code.md Status: PLACEHOLDER (Phase 3) TODOs: 2 claude-desktop.md Status: PLACEHOLDER (Phase 3) TODOs: 2 cursor.md Status: PLACEHOLDER (Phase 3) TODOs: 2 codex.md Status: PLACEHOLDER (Phase 3) TODOs: 2 obsidian.md Status: PLA
Read the thread · 2026-08-25 · closed · 0 comments
Publish doiget to npm so the MCP entry is one line — optionalDependencies, no postinstall, Trusted Publishing
The concrete build-out of #501's priority-1 channel. Registration mechanics verified 2026-08-26.
Target
claude mcp add doiget -- npx -y doiget serve
No binary handling, no C toolchain, no PATH edit. This is also the prerequisite for the Claude Code plugin route (sibling issue), whose .mcp.json is exactly {"command":"npx","args":["-y","doiget@latest","serve"]} — the same shape the official firebase plugin ships.
What exists to package
The workspace produces one binary
Read the thread · 2026-08-25 · closed · 0 comments
test: the batch --json and MCP diagnostic wiring points would survive being disconnected
Found in the #468 review. Same shape as #413 / #442 / #454 / #458: the component works, the wiring is untested, and disconnecting it leaves the suite green.
batch --json
crates/doiget-cli/src/commands/batch.rs:535 (inside classify_joined) is the only place that threads a real FetchPaperOutcome's attempts into build_jsonl_failure.
Every test that asserts the JSONL record contains attempts / remediation calls build_jsonl_failure directly with hand-built arguments. The o
Read the thread · 2026-08-25 · closed · 1 comment
The MCP envelope and batch --json carry no resolution trace and no remediation hint, so an agent is told "blocked" and cannot find the one-line fix
Everything #443, #448 and #449 added to make a blocked fetch actionable is CLI text. The two
machine-readable surfaces — the MCP tool envelope and batch --json — get none of it.
Evidence
Real doiget serve, doiget_fetch_paper, 10.1109/TSP.2018.2812747:
KEYS : [authors, license, oa_status, ok, path, pdf, ref,
resolver_profile, schema_version, size_bytes, source, title, year]
has attempts: False
pdf : { status: "blocked",
code: "NETW
[Read the thread](https://github.com/QAtlasHub/doiget/issues/459) · 2026-08-24 · closed · 0 comments
### bug(transport): the Tier-3 allowlists are never registered in the production HTTP client, so every TDM fetch fails UnknownSource
`tier_3_aps_allowlist()`, `tier_3_elsevier_allowlist()` and `tier_3_springer_allowlist()` are
implemented, feature-gated and asserted by a registry guard. **Nothing calls them.** Neither
`build_http_client` (CLI) nor its MCP twin extends `allowlists` with them, so the production
client has no entry under the `tdm-*` source keys and `ctx.http.fetch_bytes("tdm-aps", ...)`
returns `UnknownSource`.
This is #442 one layer down. #444 made the orchestrator *reach* the three sources; the transport
gate
[Read the thread](https://github.com/QAtlasHub/doiget/issues/454) · 2026-08-24 · closed · 0 comments
### feat(source): HAL — French national repository OA
Part of #413. Priority 5 — smallest scope, land last.
## Why
HAL is the French national OA repository. It holds deposits (notably in maths, physics and CS) that are absent from Crossref-centric indexes, so Unpaywall misses them.
## API
Public, no auth. Verified 2026-08-22:
GET https://api.archives-ouvertes.fr/search/?q=*:*&rows=1&wt=json → 200
Solr-style query interface; DOI lookup via the `doiId_s` field.
Terms: <https://api.archives-ouvertes.fr/docs> (record the exact ToS URL
[Read the thread](https://github.com/QAtlasHub/doiget/issues/418) · 2026-08-22 · closed · 0 comments
### feat(source): CORE — cross-repository OA aggregation (optional free key)
Part of #413. Priority 4.
## Why
CORE aggregates OA full text across repositories worldwide and is the broadest single OA PDF index outside Unpaywall. Useful as the last OA fallback before giving up.
## API
Verified live 2026-08-22: `https://api.core.ac.uk/v3/search/works` → 200.
Works without a key at a low rate limit; a **free** key raises it. Key handling must follow the existing pattern — read from the user's own config/env, never bundled, never required to build.
Terms: <https://core.
[Read the thread](https://github.com/QAtlasHub/doiget/issues/417) · 2026-08-22 · closed · 0 comments
### MCP: hide doiget_expand_citation_graph from tools/list in feature-off builds (follow-up to #373)
Follow-up to **#373**. Part (a) shipped (#378) — the citation tool now builds into the released binaries / `.mcpb` and works in Claude Desktop. Part **(b)** — *hide* `doiget_expand_citation_graph` from `tools/list` in a feature-off (`cargo install`, no `--features citation`) build, so an agent never sees a tool that returns `NOT_IMPLEMENTED` — is still open.
## Why the obvious fix doesn't work
`#[cfg(feature = "citation")]` on the `#[tool]` **method** fails to compile in the feature-off build (
[Read the thread](https://github.com/QAtlasHub/doiget/issues/379) · 2026-06-29 · closed · 0 comments
### Decide: ship doiget_expand_citation_graph enabled, or hide it when built without --features citation (always NOT_IMPLEMENTED in .mcpb)
Surfaced during `.mcpb` dogfooding.
## Observation
`doiget_expand_citation_graph` is registered (appears in the tool list) but the default release build — and therefore the shipped `.mcpb` — is compiled **without** `--features citation` (ADR-0010), so in Claude Desktop the tool **always returns `NOT_IMPLEMENTED`**. Exposing a tool that can never succeed is confusing for an agent (and the `depth`/`total`/`per_paper` params also hit the stringified-number bug, separately).
## Options
- **(a) Shi
[Read the thread](https://github.com/QAtlasHub/doiget/issues/373) · 2026-06-25 · closed · 0 comments
### Citation resolver drops title-less author-year queries (0.5 score cutoff)
Found via `doiget_batch_resolve_citations` during `.mcpb` dogfooding.
## Symptom
`doiget_batch_resolve_citations(["…", "Bulla Costi Pruschke 2008"])` → the 2nd query returned **no candidates** (filtered below the 0.5 confidence cutoff), even though it uniquely identifies a well-known paper (Rev. Mod. Phys. 80, 395). Author + year strings with no title score low and are dropped entirely.
## Proposal
- Evaluate lowering / making the score threshold configurable, or boosting author+year matches.
[Read the thread](https://github.com/QAtlasHub/doiget/issues/372) · 2026-06-25 · closed · 0 comments
### MCP: numeric tool params reject stringified numbers ("10") — breaks limit / max_chars / depth / total / per_paper
Found while dogfooding the `.mcpb` in Claude Desktop. Several tools error when the client sends a numeric argument as a JSON **string** (`"10"`) instead of a number (`10`) — a common LLM / MCP-client behavior.
## Symptoms (deserialization / type errors)
- `doiget_paper_text` → `max_chars` rejected
- `doiget_expand_citation_graph` → `depth` / `total` / `per_paper` rejected
- `doiget_paper_search` → `limit` rejected on the (stringified) call
## Root cause
Inputs are typed as plain `Option<u32>`
[Read the thread](https://github.com/QAtlasHub/doiget/issues/370) · 2026-06-25 · closed · 0 comments
The remaining reports are on [the project's issue tracker](https://github.com/sotashimozono/doiget/issues).