Contract
{
"type": "object",
"required": [
"search"
],
"properties": {
"type": {
"enum": [
"",
"行业洞察",
"产品洞察",
"用户洞察",
"趋势洞察"
],
"type": "string",
"description": "报告类型/Report type: 空=全部, 行业洞察=Industry, 产品洞察=Product, 用户洞察=User, 趋势洞察=Trend"
},
"search": {
"type": "string",
"description": "Search keyword"
},
"business": {
"type": "string",
"description": "所属产品列表,逗号分隔/Business list, comma separated. Options: 巨量引擎, 今日头条, 抖音, 西瓜视频, 抖音电商, 仕小禄, 其他"
},
"category": {
"type": "string",
"default": "6",
"description": "Top category ID (default 6 = Douyin Index trend reports)"
},
"page_size": {
"type": "string",
"default": "16",
"description": "Page size"
},
"report_time": {
"type": "string",
"description": "Year list, comma separated. e.g. 2024,2023"
},
"current_page": {
"type": "string",
"default": "1",
"description": "Page number"
}
},
"additionalProperties": false
}{
"type": "object",
"properties": {
"total_num": {
"type": "string",
"description": "Total number of matching reports across all pages, as a string -- \"34\" on the beauty search, \"0\" on a keyword matching no reports."
},
"report_list": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The report's numeric id, as a string."
},
"type": {
"type": "string",
"description": "Report type label -- e.g. industry insight, trend insight, or product insight (reports arrive labeled in the endpoint's own taxonomy)."
},
"cover": {
"type": "array",
"items": {
"type": "object",
"properties": {
"width": {
"type": "string",
"description": "Cover width as a string, e.g. \"600\"."
},
"height": {
"type": "string",
"description": "Cover height as a string, e.g. \"338\"."
},
"cover_url": {
"type": [
"string",
"null"
],
"description": "Cover image URL. Withheld (stripped to `null`) in this tool's output -- only whether the field is populated is observable, not the image itself (a URL leaf, see verification.notes)."
}
},
"additionalProperties": true
},
"description": "Cover image entry for the report."
},
"title": {
"type": "string",
"description": "Report title; populated on every report observed."
},
"author": {
"type": "string",
"description": "Publisher attribution -- organization name(s), e.g. a vendor research institute or its business units, joined in one string. Not a personal name."
},
"business": {
"type": "array",
"items": {
"type": "string"
},
"description": "Business / product-line tags (e.g. the platform's own business units)."
},
"category": {
"type": "string",
"description": "Category id as a string; \"6\" on every report observed (the trend-report category)."
},
"industry": {
"type": "array",
"items": {
"type": "string"
},
"description": "Industry tags (e.g. beauty/cosmetics, fashion); can be empty."
},
"keywords": {
"type": "string",
"description": "Space-separated keyword tags as one string, e.g. \"douyin fashion makeup\"."
},
"visit_cnt": {
"type": "string",
"description": "Visit / view count for the report, as a string (e.g. \"2700\")."
},
"post_files": {
"type": "array",
"items": {
"type": "object",
"properties": {
"file_url": {
"type": "string",
"description": "The attached file's path on the provider's own content CDN (e.g. `lf3-.../obj/ad-count-platform/report.pdf`). Scheme-less -- a path, not a full URL."
},
"file_name": {
"type": "string",
"description": "Attached file name, e.g. \"report.pdf\"."
},
"file_image": {
"type": [
"string",
"null"
],
"description": "Attached file's image URL. Withheld (stripped to `null`) in this tool's output -- a URL leaf, see verification.notes."
}
},
"additionalProperties": true
},
"description": "Downloadable file entries for the report (typically one PDF)."
},
"result_type": {
"type": "string",
"description": "Result-variant tag (e.g. a white-paper-industry marker); empty string on reports without one."
},
"display_time": {
"type": "string",
"description": "Report publish date as a YYYY-MM-DD string, e.g. \"2026-06-15\". This is a date, not a phone number -- flagged phone-shaped by the capture step's digit-run heuristic."
},
"download_cnt": {
"type": "string",
"description": "Download count for the report, as a string (e.g. \"398\")."
},
"introduction": {
"type": "string",
"description": "Report synopsis / summary text. Runs long; the report's own marketing copy."
},
"union_result": {
"type": "boolean",
"description": "Whether the report is a union / white-paper result."
},
"coop_institution": {
"type": "string",
"description": "Cooperating institution attribution (an organization), when any; empty string on some reports."
}
},
"additionalProperties": true
},
"description": "Matching reports, one entry per report. Confirmed non-empty on a keyword that matched real beauty-industry reports (16 entries in one page); empty on a keyword that matched nothing."
}
},
"description": "The trend-report search document, as returned at routing.responseResultPath ($.output). Observed as `{ report_list: [], total_num: \"0\" }` when the search keyword matches no reports.",
"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 25, 2026
