Skip to content

ADR-00015: Discovery scope is OpenAlex search.semantic, not a general multi-aggregator expansion

Context

ResearchPublicationProvider's search capability is keyword search scoped to a single source (arXiv, Europe PMC). OpenAlex's search.semantic offers something genuinely different: free-text input up to 2,000 characters, embedded and ranked by cosine similarity against every indexed work's own title/abstract embedding — real embedding-based retrieval, not keyword matching. The question is whether "discovery" should mean this one capability, or a general pattern extended across other aggregators (Semantic Scholar, PubMed, CORE) that also index scholarly works.

Decision

Discovery scope is narrowly OpenAlex's search.semantic parameter on /works.

Alternatives considered

Consequences

Practical limits inherited from the API itself apply directly: maximum 50 results per query, rate-limited to 1 request/second, and it can't be combined with OpenAlex's other search/search.exact parameters in the same request. Input over 2,000 characters is a separate, PriorisMCP-imposed policy, not an inherited OpenAlex behaviour: OpenAlex's own search.semantic silently uses just the first 2,000 characters of a longer query rather than rejecting it, but research_discovery rejects it outright with invalid_request instead of silently discarding part of the caller's input — see Interface specification → research_discovery.

Referenced from