Contract
{
"type": "object",
"anyOf": [
{
"required": [
"id"
]
},
{
"required": [
"doi"
]
},
{
"required": [
"q"
]
}
],
"properties": {
"q": {
"type": "string",
"description": "query (alternative to id â relevance search)"
},
"id": {
"type": "string",
"description": "paper arXiv id, DOI, or OpenAlex id"
},
"doi": {
"type": "string",
"description": "alias for id (DOI form)"
},
"maxItems": {
"type": "string",
"default": "15",
"description": "1-50"
}
},
"additionalProperties": false
}{
"type": "object",
"properties": {
"count": {
"type": "number",
"description": "Number of items in `items` for this call -- 15 (the default `maxItems`) on the seed-paper fixture, 5 (an explicit `maxItems`) on the topic-query fixture."
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"doi": {
"type": [
"string",
"null"
],
"description": "DOI string when the paper has one (e.g. \"10.1109/cvpr.2016.90\"); observed null on OpenAlex-sourced items the vendor has no DOI on file for."
},
"url": {
"type": "null",
"description": "A landing-page URL for the paper in the raw response; stripped to null (census urlLeaf on both fixtures, see this file's own header comment)."
},
"type": {
"type": "string",
"description": "Constant \"related_paper\" on every item observed."
},
"year": {
"type": "number",
"description": "Publication year, present on every item observed."
},
"title": {
"type": "string",
"description": "The paper's title, present on every item observed."
},
"venue": {
"type": [
"string",
"null"
],
"description": "Journal or venue name when known; observed null on several items with none on file, including arXiv preprints and some OpenAlex items."
},
"pdfUrl": {
"type": "null",
"description": "A direct PDF URL in the raw response when one exists; stripped to null (census urlLeaf on both fixtures, see this file's own header comment)."
},
"source": {
"type": "string",
"description": "Which backing catalog surfaced this item, e.g. \"openalex\" or \"arxiv\"."
},
"authors": {
"type": "array",
"items": {
"type": "string"
},
"description": "Published author list, in the order returned by the source. See verification.notes for why this ships as identity data and for one observed entry where the upstream vendor folded institutional affiliation/address fragments into this array."
},
"sources": {
"type": "array",
"items": {
"type": "string"
},
"description": "Present only on the topic-query fixture, not the seed-paper fixture -- which backing catalog(s) match this item for a topic search; a single-element array matching `source` on every item observed."
},
"abstract": {
"type": "string",
"description": "Full abstract text on every item observed."
},
"published": {
"type": "string",
"description": "Publication date. Format varies by source: bare date (e.g. \"2016-06-01\") on OpenAlex-sourced items, full ISO-8601 timestamp (e.g. \"2015-03-25T21:11:05Z\") on arXiv-sourced items."
},
"relatedBy": {
"type": "string",
"description": "How this item was matched: \"openalex\" on the seed-paper fixture, \"query\" on the topic-query fixture."
},
"citedByCount": {
"type": [
"number",
"null"
],
"description": "Citation count on OpenAlex-sourced items; observed null on every arXiv-sourced item in the topic-query fixture (arXiv's own index does not track this)."
},
"citationCount": {
"type": [
"number",
"null"
],
"description": "Same value as `citedByCount` on every item observed; null wherever `citedByCount` is null."
},
"openAccessUrl": {
"type": "null",
"description": "An open-access copy URL in the raw response when one exists; stripped to null (census urlLeaf on both fixtures, see this file's own header comment)."
}
},
"additionalProperties": false
}
}
},
"description": "The related-papers result, as returned at routing.responseResultPath.",
"additionalProperties": false
}Pricing
Every real charge, itemised. A model that quietly omits one is a slow financial leak, so nothing here is rolled up, and a charge that only applies to some inputs says so rather than being added in.
Prices in this catalog are the provider's own list price, not your bill: Omnial MCP charges provider cost plus a platform markup on top, so what you are charged is higher than the figure shown. For the exact amount a specific call will cost, run omnial_execute with dry_run: true; that number includes the markup and is what we hold while the call runs. It is a quote, not a cap on the charge.
| Charge | Rate |
|---|---|
Per call Flat, regardless of what comes back | $0.045045 |
- Cost basis
- Not recorded
This tool's catalog entry does not record how its final bill is determined, so we will not tell you whether its cost is fixed before the call or reported by the provider afterwards. Either way what is held is a quote rather than a cap: you are charged what the call actually costs, bounded at 2x the quote.
- Updated
- Sep 8, 2026
