Skip to content
Rivul AI
Explore
FeaturesDeep ResearchRivul AtlasResourcesToolsGuidesExamplesVenues
PricingDocsBlogAbout
Log inStart researching for free
FeaturesDeep ResearchRivul AtlasPricingDocsBlogResourcesToolsGuidesExamplesVenuesAboutLog in
Rivul AI

Cite as you write. One platform for your library, citations, and export.

Product

FeaturesRivul AtlasRivul Deep ResearchPricingResearchWriting

Resources

DocumentationResearch guidesFree citation toolsCitation examplesVenue workflowsBlogFAQ

Company

About Rivul AIContact and supportRivul AI · @rivulapp
© 2026 Rivul AI
PrivacyTermsAI useCopyright

Start

Create your first source-backed paperResearch workflows

Library

Library

Writing

Writing

Research

Research chatFind papers

Analyze

AnalyzeClaim checkingReview

Citations

Citations

Export

Export

Rivul Atlas

What is MCP for AI research?Connect Claude Code to Rivul AtlasAI research with OpenAI Codex and Rivul AtlasConnect Cursor to Rivul AtlasConnect Google Antigravity to Rivul AtlasConnect Meta Muse Code to Rivul AtlasRivul Atlas MCP tool referenceAtlas MCP credits and limits

Account

Account and settingsPrivacy and AI use

Documentation/Rivul Atlas MCP tool reference

Public guide

Rivul Atlas MCP tool reference

The Rivul Atlas MCP server exposes two read-only tools. This reference lists every parameter, bound, response field, and error they return.

On this page
  1. 01search_papers
  2. 02What a search returns
  3. 03Why a field can be missing
  4. 04Truncated values and what that means for citation
  5. 05Paging through results
  6. 06usage_status
  7. 07Errors you can get back

01search_papers

Searches the Rivul Index and returns structured scholarly metadata. The tool is read-only and does not modify anything in your workspace. Each call spends 2 MCP credits regardless of how many records come back.

Only the parameters below are accepted. An unrecognized parameter is rejected rather than ignored, so a typo fails loudly instead of silently changing your search. When both are supplied, year_min must not be greater than year_max.

ParameterTypeRequiredAccepted rangeDefault
querystringYes1 to 500 characters—
limitintegerNo1 to 5010
offsetintegerNo0 to 10,0000
sortstringNorelevance, most_cited, newest, oldestrelevance
year_minintegerNo1000 to 9999—
year_maxintegerNo1000 to 9999—
min_citationsintegerNo0 or greater—
open_access_onlybooleanNotrue or false—
topicstringNo1 to 200 characters—
fieldstringNo1 to 200 characters—
search_papers parameters.
search_papers argumentsjson
{
  "query": "retrieval-augmented generation",
  "limit": 5,
  "sort": "most_cited",
  "year_min": 2020,
  "open_access_only": true
}

02What a search returns

A result carries a list of works and a meta block describing the page you received. Only openalex_id, title, authors, and is_oa are always present; the rest appear when the underlying record has them, so treat any other field as optional in your own code.

A record is a discovery lead. It tells you a paper exists and where to find it, not that the paper supports a claim you are about to make.

FieldTypePresent
openalex_idstringAlways
titlestringAlways
authorsstring arrayAlways
is_oabooleanAlways
publication_yearintegerWhen known
publication_datestringWhen known
doistringWhen known
venuestringWhen known
work_typestringWhen known
snippetstringWhen known
cited_by_countintegerWhen known
topicstringWhen known
fieldstringWhen known
oa_urlstringWhen known
landing_urlstringWhen known
Fields on each work in the result.

03Why a field can be missing

Atlas normalizes every record before publishing it, and a value that does not survive normalization is left out of the record rather than returned as null or an empty string. That is why a result can carry four keys and still be correct.

Text is HTML-entity decoded and its whitespace collapsed, so a title stored as A & B is published as A & B. A string that is empty after that is dropped. A URL is dropped unless it parses and uses http or https, so a malformed oa_url disappears even though the index sent one. A number is dropped unless it is a non-negative whole number, which is why a cited_by_count of 0 is kept.

is_oa behaves differently from the rest: it is always present, and anything other than a literal true becomes false rather than being omitted.

04Truncated values and what that means for citation

Atlas publishes metadata and links. It does not host or redistribute full text, so a long value is shortened rather than returned whole. The same bounds apply on every channel: MCP, the REST API, and the console all return identical records, because one shared function normalizes them before either adapter sees them.

Two of these bounds change what the data means rather than just its length. The snippet is an abstract excerpt cut at 1,500 characters, not the abstract. The author list stops at eight names.

The response does not tell you whether either was shortened. There is no author count and no truncation flag, so eight names can mean a paper with eight authors or a paper with eight hundred. Do not build a bibliography from the authors field without confirming the author list against the DOI or landing page. Atlas is a discovery surface; the source record remains the authority for anything you cite.

FieldBoundEffect
authors8 namesLonger lists are cut with no indication that they were
snippet1,500 charactersAn excerpt of the abstract, not the whole abstract
title500 charactersA record with no usable title is not returned at all
openalex_id256 charactersA record with no usable identifier is not returned at all
venue500 charactersTruncated
doi512 charactersTruncated
topic, field300 characters eachTruncated
work_type100 charactersTruncated
publication_date32 charactersTruncated
oa_url, landing_url2,048 charactersDropped unless the value is a valid http or https URL
Bounds applied to each field before publication.

05Paging through results

The meta block describes the page you received. Use offset, page_size and next_offset rather than guessing, and remember that every page costs another 2 credits.

snapshot_at and generation_id identify which index build answered you, which is what makes a search reproducible later. Record them alongside a result set you intend to cite.

FieldTypePresent
sourcestringAlways, and always rivul_index
offsetintegerAlways
page_sizeintegerAlways
has_morebooleanAlways
next_offsetintegerOnly when has_more is true
total_matchesintegerWhen the index reports it
corpus_recordsintegerWhen the index reports it
filtered_recordsintegerWhen the index reports it
generation_idstringWhen the index reports it
snapshot_atstringWhen the index reports it
Fields on the meta block.

06usage_status

Returns the approved workspace's current MCP allowance. It takes no parameters, is read-only and idempotent, and never spends a credit, so it is always safe to call when you are unsure whether a connection still works.

The response names the workspace, the plan, the billing period as a UTC calendar month, and the credits used, allowed, and remaining for the MCP channel.

usage_status responsejson
{
  "usage": {
    "workspace_id": "...",
    "plan": "...",
    "period": "2026-09",
    "mcp": { "used": 8, "limit": 1000, "remaining": 992 }
  }
}

07Errors you can get back

Insufficient scope. The grant is missing search:read or usage:read. The error names the scope it needs. Authorize again and approve both read-only scopes.

Invalid parameters. A value fell outside the ranges above, or an unrecognized parameter was sent. No credits are spent on a rejected call.

Invalid key. A dedicated MCP key that has been revoked returns HTTP 401 Invalid Rivul Atlas key. This is distinct from running out of allowance.

Quota exhausted. The workspace has spent its MCP credits for the current period. Read usage_status to confirm, since that call costs nothing.

Search temporarily unavailable. Atlas rejects a whole page rather than returning part of it: if the index returns more rows than the requested limit, or any row without a usable identifier and title, the call fails instead of quietly returning fewer records. The credit reserved for a failed search is refunded. Retry, and treat a persistent failure as an index problem rather than a bad query.

  • See what each call costs
  • Start from the MCP overview
  • Read the official MCP tools specification
Previous← Connect Meta Muse Code to Rivul AtlasNextAtlas MCP credits and limits →

Something here wrong or missing? Email support@rivul.ai.

On this page

  1. 01search_papers
  2. 02What a search returns
  3. 03Why a field can be missing
  4. 04Truncated values and what that means for citation
  5. 05Paging through results
  6. 06usage_status
  7. 07Errors you can get back
Rivul AI
Explore
FeaturesDeep ResearchRivul AtlasResourcesToolsGuidesExamplesVenues
PricingDocsBlogAbout
Log inStart researching for free
FeaturesDeep ResearchRivul AtlasPricingDocsBlogResourcesToolsGuidesExamplesVenuesAboutLog in