Skip to content
Eden Engine

Paper Full Text Retrieval (by arXiv ID, DOI, PMID, or PMCID)

omnial/paper-fulltext

Given a paper's arXiv id, DOI, OpenAlex id, PMID, or PMCID, returns its full text split into sections (e.g. introduction, methods, results), the concatenated plain-text body, and which open-access source served it (arXiv's ar5iv mirror, Europe PMC for biomedical papers, or an OpenAlex-located open-access copy for others) along with whether the paper was actually open access. A paper that cannot be matched to any of those identifier types returns an error code and message instead of paper data.

activeper callv3

Price

$0.0601 per call

You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $5.00.

Data source

arXiv, Europe PMC and OpenAlex

Data from arXiv, Europe PMC and OpenAlex.

Use it

Your AI assistant does the work: it finds this tool, shows you the price first, runs it, and you are charged when the run finishes. There is nothing to set up for this tool in particular.

Connect once and your AI can find and run this tool, and any other it needs.

For developers: the calls your assistant makes
agent
// 1. search: find the tool
omnial_search({ query: "what you need" })

// 2. inspect: price and input schema
omnial_inspect({ tool: "omnial/paper-fulltext" })

// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "omnial/paper-fulltext" })

// 4. run: price the exact call first, then run it
omnial_execute({ tool: "omnial/paper-fulltext", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "omnial/paper-fulltext", input: { /* ... */ } })

// 5. settle: the call is charged when it finishes, nothing to do

Not connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.

Pricing

Every charge this tool can incur.

ChargePrice
Per call
$0.0601
Updated
Oct 27, 2026

Input and output schemas

Input schema
input_schema.json
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "id"
      ]
    },
    {
      "required": [
        "doi"
      ]
    }
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "arXiv id, DOI, OpenAlex id, PMID, or PMCID"
    },
    "doi": {
      "type": "string",
      "description": "alias for id (DOI form)"
    }
  },
  "additionalProperties": false
}
Output schema
output_schema.json
{
  "type": "object",
  "properties": {
    "code": {
      "type": "string",
      "description": "Present only on the error case instead of `count`/`items` -- e.g. 'HTTP_400' for a bogus/unmatched DOI. Other values are not documented."
    },
    "count": {
      "type": "number",
      "description": "Number of entries in `items` (typically 1)."
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "The full paper body as a single concatenated plain-text string."
          },
          "type": {
            "type": "string",
            "description": "Typically the literal string 'paper_fulltext'."
          },
          "query": {
            "type": "string",
            "description": "Echoes the requested `id`/`doi` input value."
          },
          "arxivId": {
            "type": "string",
            "description": "The arXiv identifier for the paper, present for arXiv papers. Whether an equivalent id field is present for a DOI/PMID/PMCID lookup served by Europe PMC or OpenAlex instead of arXiv is not documented."
          },
          "sections": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "text": {
                  "type": "string"
                },
                "heading": {
                  "type": "string"
                }
              },
              "additionalProperties": true
            },
            "description": "The paper's body split into named sections, in document order."
          },
          "openAccess": {
            "type": "boolean"
          },
          "fulltextSource": {
            "type": "string",
            "description": "Which source served the full text, e.g. 'ar5iv' for an arXiv paper; the provider's own documentation additionally names Europe PMC for biomedical identifiers and OpenAlex-located open-access copies for others, but neither has been observed in testing."
          }
        },
        "additionalProperties": true
      },
      "description": "Present on a successful lookup; absent on the error case (see `code`/`message`)."
    },
    "message": {
      "type": "string",
      "description": "Present only on the error case, alongside `code`; a short human-readable reason."
    }
  },
  "description": "The paper lookup result.",
  "additionalProperties": true
}