Contract
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "The product page URL to extract from. Context.dev first decides whether the URL really is a product page."
},
"maxAgeMs": {
"type": "integer",
"default": 86400000,
"maximum": 2592000000,
"minimum": 0,
"description": "Reuse a cached result younger than this many milliseconds. Default 86400000 (1 day), max 2592000000 (30 days). Set 0 to always fetch fresh."
},
"timeoutMS": {
"type": "integer",
"maximum": 300000,
"minimum": 1000,
"description": "Upstream timeout in milliseconds (max 300000). Context.dev aborts the call with a 408 when exceeded. Keep it below the endpoint's requestTimeoutMs so the provider answers before the platform's own budget expires."
}
},
"additionalProperties": false
}{
"type": "object",
"properties": {
"product": {
"type": "object",
"properties": {
"sku": {
"type": "string"
},
"name": {
"type": "string",
"description": "The product's own name/title, as listed."
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Free-form descriptive tags for the product."
},
"price": {
"type": [
"number",
"null"
],
"description": "The current listed price, in `currency`."
},
"category": {
"type": "string"
},
"currency": {
"type": "string",
"description": "ISO 4217 currency code, e.g. \"USD\"."
},
"features": {
"type": "array",
"items": {
"type": "string"
},
"description": "Short bullet-point product features/highlights, extracted from the page."
},
"dimensions": {
"type": "array",
"description": "Physical product dimensions. Observed as an empty array on the one captured fixture -- populated shape is unconfirmed."
},
"description": {
"type": "string"
},
"availability": {
"type": "string",
"description": "Observed value: \"in_stock\". Other states (e.g. out of stock) unconfirmed."
},
"pricing_model": {
"type": "string",
"description": "Observed value: \"flat\". Other pricing models are unconfirmed."
},
"regular_price": {
"type": [
"number",
"null"
],
"description": "The non-discounted list price, when the page shows one. Observed null when no separate regular price is shown (the fixture's product had no sale/regular split)."
},
"target_audience": {
"type": "array",
"items": {
"type": "string"
},
"description": "Short phrases describing who the product is aimed at."
},
"billing_frequency": {
"type": "string",
"description": "Observed value: \"one_time\". A subscription product's value is unconfirmed."
}
},
"description": "The normalized product record. Absent entirely when is_product_page is false -- not present as null or {}.",
"additionalProperties": true
},
"platform": {
"type": [
"string",
"null"
],
"description": "The detected commerce platform, e.g. \"generic\". Observed null on the one non-product-page fixture captured -- platform detection appears tied to product-page detection."
},
"cache_metadata": {
"type": "object",
"properties": {
"age_ms": {
"type": "number",
"description": "Age of the cached result in milliseconds, 0 on a fresh fetch (miss)."
},
"status": {
"type": "string",
"description": "Observed values: \"miss\" (freshly fetched), \"hit\" (served from cache)."
}
},
"description": "Whether this result was served from cache or freshly fetched.",
"additionalProperties": true
},
"is_product_page": {
"type": "boolean",
"description": "Whether Context.dev classified the URL as a product page."
}
},
"description": "The detection-and-extraction result, as returned at the result path. `product` is only present when `is_product_page` is true -- a non-product URL returns no `product` key at all (observed directly: examples/wikipedia-non-product.json).",
"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.012285 |
- 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
