Contract
{
"type": "object",
"required": [
"q"
],
"properties": {
"q": {
"type": "string",
"description": "a field, discipline, or short topic phrase (e.g. 'crispr', 'exercise science')"
},
"maxItems": {
"type": "string",
"default": "12",
"description": "cluster size cap (1-25)"
}
},
"additionalProperties": false
}{
"type": "object",
"properties": {
"count": {
"type": "number",
"description": "Number of entries in `items`; 1 on both fixtures observed."
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"mode": {
"type": "string",
"description": "How the query was resolved: 'topic' when it matched the taxonomy (crispr fixture), 'fallback-search' when it did not (nonsense fixture). Other values are unconfirmed."
},
"note": {
"type": "string",
"description": "Present only on a no-match fallback (observed value: 'taxonomy had no match; fell back to plain relevance search'); absent when `mode` is 'topic'."
},
"type": {
"type": "string",
"description": "Observed as the literal string 'topic_search' on both fixtures."
},
"count": {
"type": "number",
"description": "Number of entries in this item's `results`; 0 on the no-match fixture."
},
"query": {
"type": "string",
"description": "Echoes the requested `q` phrase."
},
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"doi": {
"type": "string",
"description": "Bare DOI string, e.g. '10.1126/science.1225829' (not a URL)."
},
"type": {
"type": "string",
"description": "Observed as the literal string 'paper'."
},
"year": {
"type": "number"
},
"title": {
"type": "string"
},
"venue": {
"type": "string",
"description": "Publishing journal or venue name."
},
"source": {
"type": "string",
"description": "Observed as the literal string 'openalex'."
},
"authors": {
"type": "array",
"items": {
"type": "string"
},
"description": "Author full names, as published on the paper."
},
"abstract": {
"type": [
"string",
"null"
],
"description": "Null on several observed papers, not always present."
},
"published": {
"type": "string",
"description": "Date string, e.g. '2012-06-29'."
},
"clusterRole": {
"type": "string",
"description": "'top_cited' or 'recent_influential', observed values only."
},
"citedByCount": {
"type": "number",
"description": "Observed identical to citationCount on every fixture entry seen."
},
"citationCount": {
"type": "number"
}
},
"additionalProperties": true
},
"description": "The paper cluster. Empty on the no-match fixture (see the sibling `note` field for that case). On a match, a mix of `clusterRole: 'top_cited'` and `clusterRole: 'recent_influential'` entries."
},
"routing": {
"type": "object",
"properties": {
"wordCount": {
"type": "number"
},
"confidence": {
"type": "number",
"description": "0-1; 0 on the no-match fixture."
},
"isQuestion": {
"type": "boolean"
},
"matchedVia": {
"type": "string",
"description": "e.g. 'topic-name' on a match, 'none' when nothing matched. Other values are unconfirmed."
},
"groundingLevel": {
"type": "string",
"description": "e.g. 'topic' on a match, 'none' when nothing matched."
}
},
"description": "Diagnostics about how the query phrase was interpreted and matched.",
"additionalProperties": true
},
"grounding": {
"type": "object",
"properties": {
"id": {
"type": [
"string",
"null"
],
"description": "Taxonomy topic id, e.g. 'T10878'."
},
"name": {
"type": [
"string",
"null"
],
"description": "The matched topic's name."
},
"field": {
"type": [
"string",
"null"
],
"description": "The topic's parent field."
},
"level": {
"type": "string",
"description": "e.g. 'topic', or 'none' on no match."
},
"subfield": {
"type": [
"string",
"null"
],
"description": "The topic's parent subfield."
}
},
"description": "The taxonomy entry the query resolved to. Every field below is `null` when `routing.groundingLevel` is 'none' (observed on the no-match fixture) rather than the field being absent.",
"additionalProperties": true
},
"candidateTopics": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"field": {
"type": "string"
},
"share": {
"type": "number",
"description": "0-1 fraction of total votes."
},
"votes": {
"type": "number"
},
"subfield": {
"type": "string"
}
},
"additionalProperties": true
},
"description": "Alternate taxonomy topics considered before settling on `grounding`, ranked by vote share. Empty on the no-match fixture."
}
},
"additionalProperties": true
}
}
},
"description": "The topic search result, as returned at routing.responseResultPath ($.output).",
"additionalProperties": true
}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.03003 |
- 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 23, 2026
