Contract
{
"type": "object",
"required": [
"domain"
],
"properties": {
"page": {
"type": "integer",
"description": "Page number"
},
"sort": {
"type": "string",
"description": "Sort order for reviews"
},
"stars": {
"type": "string",
"description": "Filter by star rating (1-5)"
},
"domain": {
"type": "string",
"description": "Company domain/identifying name as used on Trustpilot"
},
"keyword": {
"type": "string",
"description": "Search keyword within reviews"
}
},
"additionalProperties": false
}{
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"reviews": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Opaque internal review record id."
},
"date": {
"type": "string",
"description": "ISO 8601 timestamp the review was posted/last touched."
},
"text": {
"type": "string",
"description": "Full free-text review body."
},
"reply": {
"description": "Observed as `null` on every review in the one real call made (no company reply present in that sample). A populated reply's shape is UNCONFIRMED -- treat as null-or-unknown-object, not guaranteed to stay null."
},
"title": {
"type": "string"
},
"rating": {
"type": "integer",
"description": "0-5 observed (0 appeared once, alongside placeholder-looking lorem-ipsum review text -- likely a genuine low/test-like review, not a schema error)."
},
"source": {
"type": "string",
"description": "'Organic' on every review observed; other values unconfirmed."
},
"reviewer": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Opaque internal reviewer account id."
},
"country": {
"type": "string",
"description": "ISO-ish country code, e.g. 'US', 'GB'."
},
"review_count": {
"type": "integer",
"description": "This reviewer's total review count on the platform."
}
},
"additionalProperties": true
},
"verified": {
"type": "boolean",
"description": "Observed `false` on every review in the one real call made; a `true` case was not observed."
},
"experience_date": {
"type": "string",
"description": "ISO 8601 date (midnight UTC) of the experience the review describes."
}
},
"additionalProperties": true
},
"description": "One page of reviews, newest first on the one real call observed (no `sort` param supplied). 20 entries on that call; page size beyond 20 is unconfirmed."
},
"pagination": {
"type": "object",
"properties": {
"total_pages": {
"type": "integer"
},
"current_page": {
"type": "integer"
},
"total_reviews": {
"type": "integer"
}
},
"additionalProperties": true
}
},
"additionalProperties": true
},
"status": {
"type": "string",
"description": "'success' on the one real populated call observed."
}
},
"description": "The review page, as returned at routing.responseResultPath ($.output) after shaping. Observed as an empty object (no `status`, no `data` key at all) when the requested domain has no presence on the upstream review platform (see examples/nonexistent-domain.json) -- that call still settles COMPLETED, but bills $0 (billedUnits 0) rather than the quoted per-call price. Check for a missing/falsy `data` key before reading `.data.reviews`, not for the result being `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.04095 |
- 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
