Skip to content
Eden Engine

Academic Paper Search (by Keyword)

omnial/papers

Given a search query, returns up to 50 matching research papers pulled from arXiv, PubMed, OpenAlex, Crossref, and Semantic Scholar and deduplicated into one ranked list: title, authors, publication year and venue, abstract, citation count, DOI, and links to the paper page and (when available) a direct PDF.

activeper callv3

Price

$0.0301 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 $0.50.

Data source

arXiv, PubMed, OpenAlex, Crossref and Semantic Scholar

Data from arXiv, PubMed, OpenAlex, Crossref and Semantic Scholar.

Use it

Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.

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

agent
// 1. search: find the tool
omnial_search({ query: "what you need" })

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

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

// 4. run: price the exact call first, then run it
omnial_execute({ tool: "omnial/papers", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "omnial/papers", 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.0301
Updated
Oct 25, 2026

Input and output schemas

Input schema
input_schema.json
{
  "type": "object",
  "required": [
    "q"
  ],
  "properties": {
    "q": {
      "type": "string",
      "description": "search query / keywords"
    },
    "sort": {
      "enum": [
        "relevance",
        "recency",
        "citations"
      ],
      "type": "string",
      "default": "relevance"
    },
    "source": {
      "enum": [
        "all",
        "arxiv",
        "pubmed",
        "openalex",
        "crossref",
        "semanticscholar"
      ],
      "type": "string",
      "default": "all"
    },
    "year_to": {
      "type": "string",
      "description": "latest publication year (inclusive)"
    },
    "maxItems": {
      "type": "string",
      "default": "20",
      "description": "1-50"
    },
    "year_from": {
      "type": "string",
      "description": "earliest publication year (inclusive)"
    }
  },
  "additionalProperties": false
}
Output schema
output_schema.json
{
  "type": "object",
  "required": [
    "count",
    "items"
  ],
  "properties": {
    "count": {
      "type": "number",
      "description": "Number of items returned by this call, e.g. 20 for a broad query or 0 for no match."
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "type",
          "source",
          "sources",
          "title",
          "abstract",
          "authors",
          "year",
          "published",
          "venue",
          "url",
          "pdfUrl",
          "doi",
          "citationCount",
          "citedByCount"
        ],
        "properties": {
          "doi": {
            "type": [
              "string",
              "null"
            ],
            "description": "Observed null on several real arxiv preprints that have not been assigned a DOI."
          },
          "url": {
            "type": "string",
            "description": "Link to the paper's page on its source site."
          },
          "type": {
            "type": "string",
            "description": "Observed as the literal string 'paper' on every real item."
          },
          "year": {
            "type": [
              "number",
              "null"
            ],
            "description": "Null when the source carries no year."
          },
          "title": {
            "type": "string"
          },
          "venue": {
            "type": [
              "string",
              "null"
            ],
            "description": "Journal, conference, or repository name, e.g. 'arXiv', 'Nature', 'New England Journal of Medicine'. Null when the source lists none."
          },
          "pdfUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "Direct PDF link when the source offers one; observed null for several real openalex items with no open PDF."
          },
          "source": {
            "type": "string",
            "description": "Which upstream index this specific result came from, e.g. 'arxiv', 'openalex'."
          },
          "authors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Author full names, in order as returned by the source index."
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Same value as `source`, wrapped in a single-element array on every real item observed."
          },
          "abstract": {
            "type": [
              "string",
              "null"
            ],
            "description": "Observed null on several real openalex items (abstract not available from that index), a full paragraph otherwise."
          },
          "published": {
            "type": [
              "string",
              "null"
            ],
            "description": "Publication date/time. Null when the source carries none. Observed as a full ISO 8601 timestamp for arxiv items and a bare YYYY-MM-DD date for openalex items -- format varies by source, not a fixed pattern."
          },
          "citedByCount": {
            "type": [
              "number",
              "null"
            ],
            "description": "Same value as `citationCount` on every real item observed (openalex-sourced items only) -- null wherever citationCount is null."
          },
          "citationCount": {
            "type": [
              "number",
              "null"
            ],
            "description": "Observed null for every real arxiv item (arxiv's own index does not track citation counts) and a real integer for every real openalex item."
          },
          "openAccessUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "Open-access copy link when one exists; observed null for several real openalex items with no open-access version."
          }
        },
        "additionalProperties": true
      },
      "description": "Empty array on a genuinely no-match query (confirmed real, not inferred)."
    }
  },
  "description": "The paper-search result.",
  "additionalProperties": true
}