Contract
{
"type": "object",
"required": [
"post_id"
],
"properties": {
"after": {
"type": "string",
"maxLength": 4096,
"description": "Pagination parameter for fetching next page"
},
"post_id": {
"type": "string",
"pattern": "^t3_[a-z0-9]{1,17}$",
"examples": [
"t3_1ojnvca"
],
"maxLength": 20,
"minLength": 4,
"description": "Post ID"
},
"language": {
"type": "string",
"default": "en-US",
"pattern": "^[A-Za-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$",
"maxLength": 16,
"minLength": 2,
"description": "Preferred response language as an IETF language tag; default: en-US"
},
"sort_type": {
"enum": [
"CONFIDENCE",
"NEW",
"TOP",
"HOT",
"CONTROVERSIAL",
"OLD",
"RANDOM"
],
"type": "string",
"default": "CONFIDENCE",
"examples": [
"CONFIDENCE"
],
"description": "Sort method: CONFIDENCE, NEW, TOP, HOT, CONTROVERSIAL, OLD, RANDOM"
},
"need_format": {
"type": "boolean",
"default": false,
"description": "Whether to clean and format the data"
}
},
"additionalProperties": false
}{
"type": "object",
"properties": {
"postInfoById": {
"type": [
"object",
"null"
],
"properties": {
"id": {
"type": "string",
"description": "Echoes the queried post_id, e.g. 't3_1ojnvca'."
},
"title": {
"type": "string"
},
"subreddit": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Reddit's internal subreddit id, e.g. 't5_2qh0u'."
},
"name": {
"type": "string",
"description": "The subreddit's own name, e.g. 'pics'."
},
"prefixedName": {
"type": "string",
"description": "e.g. 'r/pics'."
},
"isQuarantined": {
"type": "boolean"
},
"allowedMediaInComments": {
"type": "array",
"items": {
"type": "string"
},
"description": "Media types this subreddit permits inside comments, e.g. 'GIPHY', 'STATIC', 'EXPRESSION', 'VIDEO'."
}
},
"additionalProperties": true
},
"commentCount": {
"type": "number",
"description": "Reddit's own headline total comment count for the post as a whole -- can exceed `commentForest.pageInfo.commentCount` and the number of comment entries actually returned in `commentForest.trees`, since not every comment is loaded in one call."
},
"commentForest": {
"type": "object",
"properties": {
"trees": {
"type": "array",
"items": {
"type": "object",
"properties": {
"more": {
"type": [
"object",
"null"
],
"properties": {
"count": {
"type": "number"
},
"cursor": {
"type": "string",
"description": "An opaque continuation token for this collapsed branch. Its exact use with this tool's own `after` input parameter was not exercised during calibration, so treat it as opaque rather than assume it is directly interchangeable with `after`."
},
"isTooDeepForCount": {
"type": "boolean"
}
},
"description": "Present instead of a real comment when this entry represents additional, not-yet-loaded replies.",
"additionalProperties": true
},
"node": {
"type": [
"object",
"null"
],
"properties": {
"id": {
"type": "string"
},
"score": {
"type": "number"
},
"content": {
"type": "object",
"properties": {
"preview": {
"type": "string",
"description": "Plain-text rendering with markdown/links stripped."
},
"markdown": {
"type": "string",
"description": "Raw Reddit markdown source."
},
"typeHint": {
"type": "string",
"description": "e.g. 'TEXT' for plain text, or 'RTJSON' for rich content such as an embedded gif (see `richtextMedia`)."
},
"richtextMedia": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"url": {
"type": "null",
"description": "URL withheld -- always returned as null in this tool's output even though the endpoint returns a real address; only whether media is attached is observable, not its location."
},
"large": {
"type": [
"object",
"null"
],
"properties": {
"url": {
"type": "null",
"description": "Withheld, same as `url` above."
},
"dimensions": {
"type": "object",
"properties": {
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"additionalProperties": true
}
},
"description": "Null on at least one real media entry calibrated (only small/medium populated); an object with the same shape as `small`/`medium` on another.",
"additionalProperties": true
},
"small": {
"type": [
"object",
"null"
],
"properties": {
"url": {
"type": "null",
"description": "Withheld, same as `url` above."
},
"dimensions": {
"type": "object",
"properties": {
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"additionalProperties": true
}
},
"additionalProperties": true
},
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"medium": {
"type": [
"object",
"null"
],
"properties": {
"url": {
"type": "null",
"description": "Withheld, same as `url` above."
},
"dimensions": {
"type": "object",
"properties": {
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"additionalProperties": true
}
},
"additionalProperties": true
},
"status": {
"type": "string",
"description": "e.g. 'VALID'."
},
"userId": {
"type": [
"string",
"null"
],
"description": "Always null on the one real thread calibrated; unconfirmed what a populated value would contain."
},
"mimetype": {
"type": "string",
"description": "e.g. 'image/gif'."
}
},
"additionalProperties": true
},
"description": "Populated only for RTJSON comments that embed media (e.g. a gif); an empty array otherwise."
},
"translationInfo": {
"type": "object",
"properties": {
"isTranslated": {
"type": "boolean"
},
"translatedLanguage": {
"type": [
"string",
"null"
],
"description": "Always null on the one real thread calibrated -- no translated comment was observed."
}
},
"additionalProperties": true
}
},
"additionalProperties": true
},
"isSaved": {
"type": "boolean"
},
"editedAt": {
"type": [
"string",
"null"
],
"description": "ISO 8601 timestamp of the comment's last edit; null when it has never been edited. Both states observed on the one real thread calibrated."
},
"isLocked": {
"type": "boolean"
},
"createdAt": {
"type": "string",
"description": "ISO 8601 with UTC offset."
},
"isRemoved": {
"type": "boolean"
},
"permalink": {
"type": "string",
"description": "Path only, no host, e.g. '/r/pics/comments/1ojnvca/.../nm4jkk6/' -- prefix with 'https://www.reddit.com' for a browsable link."
},
"voteState": {
"type": "string",
"description": "e.g. 'NONE' -- the calling account's own vote state on this comment, not the comment's net score."
},
"authorInfo": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Reddit's internal account id for the commenter, e.g. 't2_z1uiu'."
},
"name": {
"type": "string",
"description": "The commenter's public Reddit username, exactly as displayed on the public comment page itself."
},
"newIcon": {
"type": "object",
"properties": {
"url": {
"type": "null",
"description": "Withheld, same as `iconSmall.url`."
},
"dimensions": {
"type": "object",
"properties": {
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"additionalProperties": true
}
},
"additionalProperties": true
},
"profile": {
"type": "object",
"properties": {
"isNsfw": {
"type": "boolean"
}
},
"additionalProperties": true
},
"iconSmall": {
"type": "object",
"properties": {
"url": {
"type": "null",
"description": "Withheld, same as the media `url` fields above."
},
"dimensions": {
"type": "object",
"properties": {
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"additionalProperties": true
}
},
"additionalProperties": true
},
"isBlocked": {
"type": "boolean"
},
"accountType": {
"type": "string",
"description": "e.g. 'USER'."
},
"isCakeDayNow": {
"type": "boolean"
},
"snoovatarIcon": {
"type": [
"object",
"null"
],
"properties": {
"url": {
"type": "null",
"description": "Withheld, same as `iconSmall.url`."
},
"dimensions": {
"type": "object",
"properties": {
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"additionalProperties": true
}
},
"description": "Null when the account has not set a custom snoovatar.",
"additionalProperties": true
},
"isPremiumAvatarTreatment": {
"type": "boolean"
}
},
"additionalProperties": true
},
"isArchived": {
"type": "boolean"
},
"isGildable": {
"type": "boolean"
},
"isStickied": {
"type": "boolean"
},
"languageCode": {
"type": "string",
"description": "e.g. 'en', or 'und' when undetermined."
},
"isScoreHidden": {
"type": "boolean"
},
"isTranslatable": {
"type": "boolean"
},
"distinguishedAs": {
"type": [
"string",
"null"
],
"description": "e.g. 'MODERATOR' when the author posted with special standing; null otherwise."
},
"isAdminTakedown": {
"type": "boolean"
},
"removedByCategory": {
"type": [
"string",
"null"
],
"description": "Always null on the one real thread calibrated; the shape of a populated value (an actually-removed comment) is unconfirmed."
},
"isInitiallyCollapsed": {
"type": "boolean"
},
"initiallyCollapsedReason": {
"type": [
"string",
"null"
],
"description": "e.g. 'STICKY_AUTOMOD' for an auto-collapsed sticky bot comment; null otherwise."
},
"isCommercialCommunication": {
"type": "boolean"
}
},
"description": "The comment itself; null when this tree entry is a 'more' placeholder instead (see `more`).",
"additionalProperties": true
},
"depth": {
"type": "number",
"description": "0 for a top-level comment."
},
"parentId": {
"type": [
"string",
"null"
],
"description": "The parent comment's id; null for a top-level comment."
},
"childCount": {
"type": "number"
}
},
"additionalProperties": true
},
"description": "A flat list of comment-tree entries, not a nested object tree -- `depth` and `parentId` describe reply nesting. An entry with `more` populated and `node` null is a 'load more comments' placeholder rather than an actual comment, confirmed against several entries in the one real thread calibrated."
},
"pageInfo": {
"type": "object",
"properties": {
"hasNextPage": {
"type": "boolean"
},
"commentCount": {
"type": "number",
"description": "Comment count for the current page/thread state -- distinct from the post-level `commentCount` above, and observed as a different (smaller) number on the one real thread calibrated."
}
},
"additionalProperties": true
}
},
"additionalProperties": true
}
},
"description": "The post-and-comments record; `null` when `post_id` does not resolve to an existing post (confirmed against the `nonexistent-post` fixture).",
"additionalProperties": true
}
},
"description": "The single-key envelope returned at routing.responseResultPath ($.output). `postInfoById` is `null` when `post_id` does not resolve to an existing post -- confirmed against the `nonexistent-post` fixture, where this tool's shaped output is `{ postInfoById: null }`.",
"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.0020475 |
- 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
