Zenserp MCP by usefulapi

Search Google, images, news, maps, shopping, YouTube, jobs, hotels, flights and trends with Zenserp.

我该使用它吗

质量与安全性

A
描述质量
100%
模式完整度
84%
命名质量
80%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

基于对工具定义和协议合规性的自动分析。

上下文开销

~8,378token 数(工具定义)
~3.7 KB典型响应大小
对注意力有显著影响(占 128k 上下文窗口的 6.55%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "zenserp": {
      "url": "https://zenserp.usefulapi.io/mcp"
    }
  }
}

远程端点

https://zenserp.usefulapi.io/mcpstreamable-http

它能做什么

工具清单

工具(19)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟢zenserp_get_status

The number of search requests left on this Zenserp key's plan (remaining_requests). Free: it spends no quota. GET /v2/status.

输入模式

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴zenserp_search(q, search_engine, hl, gl, lr, ...)

Live search-engine result page as JSON: organic results, ads (paid_results), featured snippets, related questions and searches, knowledge graph. Google by default; set search_engine for Bing, Yandex or DuckDuckGo. SPENDS 1 request of the monthly quota per successful call (failed calls are not charged); do not repeat a call needlessly. ai_overview=true also returns Google's AI Overview and costs 3 requests when one is returned (Small plan or higher). GET /v2/search.

输入模式

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000,
      "description": "The query; search operators such as site: and intitle: work."
    },
    "search_engine": {
      "type": "string",
      "pattern": "^(?:[a-z0-9-]+\\.)+[a-z]{2,24}$",
      "description": "Search engine host, e.g. google.com (default), google.de, bing.com, yandex.com, duckduckgo.com. zenserp_list_search_engines lists them."
    },
    "hl": {
      "type": "string",
      "pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})?$",
      "description": "Interface language (hl), e.g. en, de, pt-BR. zenserp_list_languages lists the supported codes."
    },
    "gl": {
      "type": "string",
      "pattern": "^[A-Za-z]{2}$",
      "description": "Country (gl), two letters, e.g. us, de, gb. zenserp_list_countries lists the supported codes. Default: United States."
    },
    "lr": {
      "type": "string",
      "pattern": "^lang_[A-Za-z]{2,3}(-[A-Za-z]{2,4})?(\\|lang_[A-Za-z]{2,3}(-[A-Za-z]{2,4})?){0,9}$",
      "description": "Limit results to these languages (lr), prefixed with lang_ and joined by |, e.g. lang_fr."
    },
    "location": {
      "type": "string",
      "minLength": 1,
      "maxLength": 300,
      "description": "Geolocation of the search, in Google's canonical form, e.g. 'Manhattan,New York,United States' (see zenserp_search_locations). Set it when the result depends on place, especially ads."
    },
    "device": {
      "type": "string",
      "enum": [
        "desktop",
        "mobile"
      ],
      "description": "Device to emulate."
    },
    "start": {
      "type": "integer",
      "minimum": 0,
      "maximum": 990,
      "description": "Result offset: 0 (default) first page, 10 second page, 20 third page ... Google serves about 300 results per query."
    },
    "tbs": {
      "type": "string",
      "minLength": 1,
      "maxLength": 300,
      "description": "Google 'tbs' filter string for what the query field cannot express, e.g. qdr:w (past week)."
    },
    "ai_overview": {
      "description": "true = also extract Google's AI Overview (3 requests when returned, otherwise 1; slower; Google only; Small plan or higher).",
      "type": "boolean"
    },
    "cache": {
      "type": "boolean",
      "description": "true = serve a stored copy when one exists (kept 24 h, NOT charged) and store the reply when not. Default false: every call is fetched live and charged."
    },
    "fields": {
      "minItems": 1,
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 60
      },
      "description": "Only return these top-level keys of the reply (for example organic, paid_results, related_searches). Saves context; the call is charged the same."
    }
  },
  "required": [
    "q"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴zenserp_image_search(q, hl, gl, lr, location, ...)

Google image results (thumbnails, source pages, sizes). SPENDS 1 request of the monthly quota per successful call (failed calls are not charged); do not repeat a call needlessly. Each page holds 100 images. GET /v2/search (tbm=isch).

输入模式

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000,
      "description": "The query."
    },
    "hl": {
      "type": "string",
      "pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})?$",
      "description": "Interface language (hl), e.g. en, de, pt-BR. zenserp_list_languages lists the supported codes."
    },
    "gl": {
      "type": "string",
      "pattern": "^[A-Za-z]{2}$",
      "description": "Country (gl), two letters, e.g. us, de, gb. zenserp_list_countries lists the supported codes. Default: United States."
    },
    "lr": {
      "type": "string",
      "pattern": "^lang_[A-Za-z]{2,3}(-[A-Za-z]{2,4})?(\\|lang_[A-Za-z]{2,3}(-[A-Za-z]{2,4})?){0,9}$",
      "description": "Limit results to these languages (lr), prefixed with lang_ and joined by |, e.g. lang_fr."
    },
    "location": {
      "type": "string",
      "minLength": 1,
      "maxLength": 300,
      "description": "Geolocation of the search, in Google's canonical form, e.g. 'Manhattan,New York,United States' (see zenserp_search_locations). Set it when the result depends on place, especially ads."
    },
    "device": {
      "type": "string",
      "enum": [
        "desktop",
        "mobile"
      ],
      "description": "Device to emulate."
    },
    "start": {
      "type": "integer",
      "minimum": 0,
      "maximum": 990,
      "description": "Result offset: 0 (default) first page, 10 second page, 20 third page ... Google serves about 300 results per query."
    },
    "tbs": {
      "type": "string",
      "minLength": 1,
      "maxLength": 300,
      "description": "Google 'tbs' filter string for what the query field cannot express, e.g. qdr:w (past week)."
    },
    "ijn": {
      "description": "Image page number, 100 images per page; per the docs, images 101-200 = ijn 2. Omit for the first page.",
      "type": "integer",
      "minimum": 0,
      "maximum": 30
    },
    "cache": {
      "type": "boolean",
      "description": "true = serve a stored copy when one exists (kept 24 h, NOT charged) and store the reply when not. Default false: every call is fetched live and charged."
    },
    "fields": {
      "minItems": 1,
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 60
      },
      "description": "Only return these top-level keys of the reply (for example organic, paid_results, related_searches). Saves context; the call is charged the same."
    }
  },
  "required": [
    "q"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴zenserp_news_search(q, hl, gl, lr, location, ...)

Google News results for a query: title, source, date, snippet. SPENDS 1 request of the monthly quota per successful call (failed calls are not charged); do not repeat a call needlessly. GET /v2/search (tbm=nws).

输入模式

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000,
      "description": "The query."
    },
    "hl": {
      "type": "string",
      "pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})?$",
      "description": "Interface language (hl), e.g. en, de, pt-BR. zenserp_list_languages lists the supported codes."
    },
    "gl": {
      "type": "string",
      "pattern": "^[A-Za-z]{2}$",
      "description": "Country (gl), two letters, e.g. us, de, gb. zenserp_list_countries lists the supported codes. Default: United States."
    },
    "lr": {
      "type": "string",
      "pattern": "^lang_[A-Za-z]{2,3}(-[A-Za-z]{2,4})?(\\|lang_[A-Za-z]{2,3}(-[A-Za-z]{2,4})?){0,9}$",
      "description": "Limit results to these languages (lr), prefixed with lang_ and joined by |, e.g. lang_fr."
    },
    "location": {
      "type": "string",
      "minLength": 1,
      "maxLength": 300,
      "description": "Geolocation of the search, in Google's canonical form, e.g. 'Manhattan,New York,United States' (see zenserp_search_locations). Set it when the result depends on place, especially ads."
    },
    "device": {
      "type": "string",
      "enum": [
        "desktop",
        "mobile"
      ],
      "description": "Device to emulate."
    },
    "start": {
      "type": "integer",
      "minimum": 0,
      "maximum": 990,
      "description": "Result offset: 0 (default) first page, 10 second page, 20 third page ... Google serves about 300 results per query."
    },
    "tbs": {
      "type": "string",
      "minLength": 1,
      "maxLength": 300,
      "description": "Google 'tbs' filter string for what the query field cannot express, e.g. qdr:w (past week)."
    },
    "cache": {
      "type": "boolean",
      "description": "true = serve a stored copy when one exists (kept 24 h, NOT charged) and store the reply when not. Default false: every call is fetched live and charged."
    },
    "fields": {
      "minItems": 1,
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 60
      },
      "description": "Only return these top-level keys of the reply (for example organic, paid_results, related_searches). Saves context; the call is charged the same."
    }
  },
  "required": [
    "q"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴zenserp_video_search(q, hl, gl, lr, location, ...)

Google video results for a query (title, channel, length, link). SPENDS 1 request of the monthly quota per successful call (failed calls are not charged); do not repeat a call needlessly. GET /v2/search (tbm=vid).

输入模式

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000,
      "description": "The query."
    },
    "hl": {
      "type": "string",
      "pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})?$",
      "description": "Interface language (hl), e.g. en, de, pt-BR. zenserp_list_languages lists the supported codes."
    },
    "gl": {
      "type": "string",
      "pattern": "^[A-Za-z]{2}$",
      "description": "Country (gl), two letters, e.g. us, de, gb. zenserp_list_countries lists the supported codes. Default: United States."
    },
    "lr": {
      "type": "string",
      "pattern": "^lang_[A-Za-z]{2,3}(-[A-Za-z]{2,4})?(\\|lang_[A-Za-z]{2,3}(-[A-Za-z]{2,4})?){0,9}$",
      "description": "Limit results to these languages (lr), prefixed with lang_ and joined by |, e.g. lang_fr."
    },
    "location": {
      "type": "string",
      "minLength": 1,
      "maxLength": 300,
      "description": "Geolocation of the search, in Google's canonical form, e.g. 'Manhattan,New York,United States' (see zenserp_search_locations). Set it when the result depends on place, especially ads."
    },
    "device": {
      "type": "string",
      "enum": [
        "desktop",
        "mobile"
      ],
      "description": "Device to emulate."
    },
    "start": {
      "type": "integer",
      "minimum": 0,
      "maximum": 990,
      "description": "Result offset: 0 (default) first page, 10 second page, 20 third page ... Google serves about 300 results per query."
    },
    "tbs": {
      "type": "string",
      "minLength": 1,
      "maxLength": 300,
      "description": "Google 'tbs' filter string for what the query field cannot express, e.g. qdr:w (past week)."
    },
    "cache": {
      "type": "boolean",
      "description": "true = serve a stored copy when one exists (kept 24 h, NOT charged) and store the reply when not. Default false: every call is fetched live and charged."
    },
    "fields": {
      "minItems": 1,
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 60
      },
      "description": "Only return these top-level keys of the reply (for example organic, paid_results, related_searches). Saves context; the call is charged the same."
    }
  },
  "required": [
    "q"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴zenserp_maps_search(q, hl, gl, lr, location, ...)

Google local/maps results: shops, cafes and other businesses with address, rating, phone and coordinates. Set location for accurate results. SPENDS 1 request of the monthly quota per successful call (failed calls are not charged); do not repeat a call needlessly. GET /v2/search (tbm=lcl).

输入模式

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000,
      "description": "The query."
    },
    "hl": {
      "type": "string",
      "pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})?$",
      "description": "Interface language (hl), e.g. en, de, pt-BR. zenserp_list_languages lists the supported codes."
    },
    "gl": {
      "type": "string",
      "pattern": "^[A-Za-z]{2}$",
      "description": "Country (gl), two letters, e.g. us, de, gb. zenserp_list_countries lists the supported codes. Default: United States."
    },
    "lr": {
      "type": "string",
      "pattern": "^lang_[A-Za-z]{2,3}(-[A-Za-z]{2,4})?(\\|lang_[A-Za-z]{2,3}(-[A-Za-z]{2,4})?){0,9}$",
      "description": "Limit results to these languages (lr), prefixed with lang_ and joined by |, e.g. lang_fr."
    },
    "location": {
      "type": "string",
      "minLength": 1,
      "maxLength": 300,
      "description": "Geolocation of the search, in Google's canonical form, e.g. 'Manhattan,New York,United States' (see zenserp_search_locations). Set it when the result depends on place, especially ads."
    },
    "device": {
      "type": "string",
      "enum": [
        "desktop",
        "mobile"
      ],
      "description": "Device to emulate."
    },
    "start": {
      "type": "integer",
      "minimum": 0,
      "maximum": 990,
      "description": "Result offset: 0 (default) first page, 10 second page, 20 third page ... Google serves about 300 results per query."
    },
    "tbs": {
      "type": "string",
      "minLength": 1,
      "maxLength": 300,
      "description": "Google 'tbs' filter string for what the query field cannot express, e.g. qdr:w (past week)."
    },
    "cache": {
      "type": "boolean",
      "description": "true = serve a stored copy when one exists (kept 24 h, NOT charged) and store the reply when not. Default false: every call is fetched live and charged."
    },
    "fields": {
      "minItems": 1,
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 60
      },
      "description": "Only return these top-level keys of the reply (for example organic, paid_results, related_searches). Saves context; the call is charged the same."
    }
  },
  "required": [
    "q"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴zenserp_shopping_search(q, hl, gl, lr, location, ...)

Google Shopping listings for a query: product, price, merchant, rating, and the product_id for zenserp_shopping_product. SPENDS 1 request of the monthly quota per successful call (failed calls are not charged); do not repeat a call needlessly. GET /v2/search (tbm=shop).

输入模式

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000,
      "description": "The query."
    },
    "hl": {
      "type": "string",
      "pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})?$",
      "description": "Interface language (hl), e.g. en, de, pt-BR. zenserp_list_languages lists the supported codes."
    },
    "gl": {
      "type": "string",
      "pattern": "^[A-Za-z]{2}$",
      "description": "Country (gl), two letters, e.g. us, de, gb. zenserp_list_countries lists the supported codes. Default: United States."
    },
    "lr": {
      "type": "string",
      "pattern": "^lang_[A-Za-z]{2,3}(-[A-Za-z]{2,4})?(\\|lang_[A-Za-z]{2,3}(-[A-Za-z]{2,4})?){0,9}$",
      "description": "Limit results to these languages (lr), prefixed with lang_ and joined by |, e.g. lang_fr."
    },
    "location": {
      "type": "string",
      "minLength": 1,
      "maxLength": 300,
      "description": "Geolocation of the search, in Google's canonical form, e.g. 'Manhattan,New York,United States' (see zenserp_search_locations). Set it when the result depends on place, especially ads."
    },
    "device": {
      "type": "string",
      "enum": [
        "desktop",
        "mobile"
      ],
      "description": "Device to emulate."
    },
    "start": {
      "type": "integer",
      "minimum": 0,
      "maximum": 990,
      "description": "Result offset: 0 (default) first page, 10 second page, 20 third page ... Google serves about 300 results per query."
    },
    "tbs": {
      "type": "string",
      "minLength": 1,
      "maxLength": 300,
      "description": "Google 'tbs' filter string for what the query field cannot express, e.g. qdr:w (past week)."
    },
    "cache": {
      "type": "boolean",
      "description": "true = serve a stored copy when one exists (kept 24 h, NOT charged) and store the reply when not. Default false: every call is fetched live and charged."
    },
    "fields": {
      "minItems": 1,
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 60
      },
      "description": "Only return these top-level keys of the reply (for example organic, paid_results, related_searches). Saves context; the call is charged the same."
    }
  },
  "required": [
    "q"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴zenserp_youtube_search(q, hl, gl, location, sp, ...)

YouTube search results (videos, channels, ads) for a query, optionally by location. SPENDS 1 request of the monthly quota per successful call (failed calls are not charged); do not repeat a call needlessly. GET /v2/search (search_engine=youtube.com).

输入模式

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000,
      "description": "The query."
    },
    "hl": {
      "type": "string",
      "pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})?$",
      "description": "Interface language (hl), e.g. en, de, pt-BR. zenserp_list_languages lists the supported codes."
    },
    "gl": {
      "type": "string",
      "pattern": "^[A-Za-z]{2}$",
      "description": "Country (gl), two letters, e.g. us, de, gb. zenserp_list_countries lists the supported codes. Default: United States."
    },
    "location": {
      "type": "string",
      "minLength": 1,
      "maxLength": 300,
      "description": "Geolocation of the search, in Google's canonical form, e.g. 'Manhattan,New York,United States' (see zenserp_search_locations). Set it when the result depends on place, especially ads."
    },
    "sp": {
      "description": "YouTube 'sp' filter or pagination token, as used on youtube.com.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "cache": {
      "type": "boolean",
      "description": "true = serve a stored copy when one exists (kept 24 h, NOT charged) and store the reply when not. Default false: every call is fetched live and charged."
    },
    "fields": {
      "minItems": 1,
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 60
      },
      "description": "Only return these top-level keys of the reply (for example organic, paid_results, related_searches). Saves context; the call is charged the same."
    }
  },
  "required": [
    "q"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴zenserp_reverse_image_search(image_url, hl, gl, cache, fields)

Pages and sources that contain a given image (Google reverse image search). SPENDS 1 request of the monthly quota per successful call (failed calls are not charged); do not repeat a call needlessly. GET /v2/search (image_url).

输入模式

{
  "type": "object",
  "properties": {
    "image_url": {
      "type": "string",
      "maxLength": 2000,
      "pattern": "^https?:\\/\\/",
      "description": "Public URL of the image."
    },
    "hl": {
      "type": "string",
      "pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})?$",
      "description": "Interface language (hl), e.g. en, de, pt-BR. zenserp_list_languages lists the supported codes."
    },
    "gl": {
      "type": "string",
      "pattern": "^[A-Za-z]{2}$",
      "description": "Country (gl), two letters, e.g. us, de, gb. zenserp_list_countries lists the supported codes. Default: United States."
    },
    "cache": {
      "type": "boolean",
      "description": "true = serve a stored copy when one exists (kept 24 h, NOT charged) and store the reply when not. Default false: every call is fetched live and charged."
    },
    "fields": {
      "minItems": 1,
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 60
      },
      "description": "Only return these top-level keys of the reply (for example organic, paid_results, related_searches). Saves context; the call is charged the same."
    }
  },
  "required": [
    "image_url"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴zenserp_jobs_search(q, hl, gl, location, cache, ...)

Google Jobs listings for a query (jobs_results: title, company, location, source, apply url). Google returns one page; there is no paging. SPENDS 1 request of the monthly quota per successful call (failed calls are not charged); do not repeat a call needlessly. GET /v2/search (ibp=htl;jobs).

输入模式

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000,
      "description": "The job query, e.g. 'php developer'."
    },
    "hl": {
      "type": "string",
      "pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})?$",
      "description": "Interface language (hl), e.g. en, de, pt-BR. zenserp_list_languages lists the supported codes."
    },
    "gl": {
      "type": "string",
      "pattern": "^[A-Za-z]{2}$",
      "description": "Country (gl), two letters, e.g. us, de, gb. zenserp_list_countries lists the supported codes. Default: United States."
    },
    "location": {
      "type": "string",
      "minLength": 1,
      "maxLength": 300,
      "description": "Geolocation of the search, in Google's canonical form, e.g. 'Manhattan,New York,United States' (see zenserp_search_locations). Set it when the result depends on place, especially ads."
    },
    "cache": {
      "type": "boolean",
      "description": "true = serve a stored copy when one exists (kept 24 h, NOT charged) and store the reply when not. Default false: every call is fetched live and charged."
    },
    "fields": {
      "minItems": 1,
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 60
      },
      "description": "Only return these top-level keys of the reply (for example organic, paid_results, related_searches). Saves context; the call is charged the same."
    }
  },
  "required": [
    "q"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴zenserp_shopping_product(product_id, gpc_id, location, cache, fields)

Product page data from Google Shopping: description, merchant offers, variations. product_id comes from zenserp_shopping_search. With gpc_id (from the same result) it returns the whole product cluster across merchants. SPENDS 1 request of the monthly quota per successful call (failed calls are not charged); do not repeat a call needlessly. GET /v1/shopping.

输入模式

{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "The product id (PID) from a Google Shopping search result."
    },
    "gpc_id": {
      "description": "The Google Product Cluster id from the same search result (only valid together with its product_id).",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "location": {
      "type": "string",
      "minLength": 1,
      "maxLength": 300,
      "description": "Geolocation of the search, in Google's canonical form, e.g. 'Manhattan,New York,United States' (see zenserp_search_locations). Set it when the result depends on place, especially ads."
    },
    "cache": {
      "type": "boolean",
      "description": "true = serve a stored copy when one exists (kept 24 h, NOT charged) and store the reply when not. Default false: every call is fetched live and charged."
    },
    "fields": {
      "minItems": 1,
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 60
      },
      "description": "Only return these top-level keys of the reply (for example organic, paid_results, related_searches). Saves context; the call is charged the same."
    }
  },
  "required": [
    "product_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴zenserp_hotels(q, check_in, check_out, adults, children, ...)

Google Hotels offers for a hotel or place. Send check_in and check_out together, or Google falls back to today's rates. SPENDS 1 request of the monthly quota per successful call (failed calls are not charged); do not repeat a call needlessly. GET /v1/hotels.

输入模式

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000,
      "description": "Hotel name or place, e.g. 'hilton midtown new york'."
    },
    "check_in": {
      "description": "Check-in date, yyyy-mm-dd. Needs check_out.",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "check_out": {
      "description": "Check-out date, yyyy-mm-dd; later than check_in.",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "adults": {
      "description": "Number of adults.",
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    },
    "children": {
      "description": "Ages of the children, comma separated, e.g. 4,9 (Google prices by age).",
      "type": "string",
      "pattern": "^\\d{1,2}(,\\d{1,2}){0,9}$"
    },
    "currency": {
      "description": "3-letter currency code for the prices, e.g. EUR.",
      "type": "string",
      "pattern": "^[A-Za-z]{3}$"
    },
    "accommodation_type": {
      "description": "Restrict to hotels or vacation rentals.",
      "type": "string",
      "enum": [
        "hotels",
        "vacation_rentals"
      ]
    },
    "free_cancellation": {
      "description": "true = only properties with free cancellation.",
      "type": "boolean"
    },
    "hl": {
      "type": "string",
      "pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})?$",
      "description": "Interface language (hl), e.g. en, de, pt-BR. zenserp_list_languages lists the supported codes."
    },
    "gl": {
      "type": "string",
      "pattern": "^[A-Za-z]{2}$",
      "description": "Country (gl), two letters, e.g. us, de, gb. zenserp_list_countries lists the supported codes. Default: United States."
    },
    "cache": {
      "type": "boolean",
      "description": "true = serve a stored copy when one exists (kept 24 h, NOT charged) and store the reply when not. Default false: every call is fetched live and charged."
    },
    "fields": {
      "minItems": 1,
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 60
      },
      "description": "Only return these top-level keys of the reply (for example organic, paid_results, related_searches). Saves context; the call is charged the same."
    }
  },
  "required": [
    "q"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴zenserp_flights(origin, destination, departure_date, return_date, curr, ...)

Google Flights options. Best: origin and destination as 3-letter airport codes plus departure_date (dates and curr are honoured only then). A free-text q or a tfs string from a Google Flights URL also works. SPENDS 1 request of the monthly quota per successful call (failed calls are not charged); do not repeat a call needlessly. GET /v1/flights.

输入模式

{
  "type": "object",
  "properties": {
    "origin": {
      "description": "Departure airport code, e.g. JFK. Name one airport, not a city.",
      "type": "string",
      "pattern": "^[A-Za-z]{3}$"
    },
    "destination": {
      "description": "Arrival airport code, e.g. LHR.",
      "type": "string",
      "pattern": "^[A-Za-z]{3}$"
    },
    "departure_date": {
      "description": "Departure date, yyyy-mm-dd. Needs origin and destination.",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "return_date": {
      "description": "Return date, yyyy-mm-dd. Omit for one-way.",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "curr": {
      "description": "3-letter currency code for the prices, e.g. USD.",
      "type": "string",
      "pattern": "^[A-Za-z]{3}$"
    },
    "q": {
      "description": "Free-text flight query, used when no airport codes are given (no dates, no curr).",
      "type": "string",
      "minLength": 1,
      "maxLength": 2000
    },
    "tfs": {
      "description": "Google Flights search string copied from a Google Flights URL (full filters).",
      "type": "string",
      "minLength": 1,
      "maxLength": 2000
    },
    "cache": {
      "type": "boolean",
      "description": "true = serve a stored copy when one exists (kept 24 h, NOT charged) and store the reply when not. Default false: every call is fetched live and charged."
    },
    "fields": {
      "minItems": 1,
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 60
      },
      "description": "Only return these top-level keys of the reply (for example organic, paid_results, related_searches). Saves context; the call is charged the same."
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴zenserp_trends(geo, keyword, cat, timeframe, cache, ...)

Trending searches from Google Trends for a country, optionally narrowed to given keywords or a category. Trending data covers at most the past 7 days. SPENDS 1 request of the monthly quota per successful call (failed calls are not charged); do not repeat a call needlessly. GET /v1/trends.

输入模式

{
  "type": "object",
  "properties": {
    "geo": {
      "description": "Country code, e.g. US.",
      "type": "string",
      "pattern": "^[A-Za-z]{2}(-[A-Za-z0-9]{1,3})?$"
    },
    "keyword": {
      "description": "Only trends matching these terms (and their related queries). A term that is not trending returns no rows.",
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      }
    },
    "cat": {
      "description": "Google Trends category id, e.g. 16 News, 7 Finance, 18 Shopping, 20 Sports, 5 Computers & Electronics, 45 Health.",
      "type": "integer",
      "minimum": 0,
      "maximum": 2000
    },
    "timeframe": {
      "description": "Window; longer ones all return the same 7-day window for trending searches.",
      "type": "string",
      "enum": [
        "now 1-H",
        "now 4-H",
        "now 1-d",
        "now 7-d",
        "today 1-m",
        "today 3-m",
        "today 12-m",
        "today 5-y"
      ]
    },
    "cache": {
      "type": "boolean",
      "description": "true = serve a stored copy when one exists (kept 24 h, NOT charged) and store the reply when not. Default false: every call is fetched live and charged."
    },
    "fields": {
      "minItems": 1,
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 60
      },
      "description": "Only return these top-level keys of the reply (for example organic, paid_results, related_searches). Saves context; the call is charged the same."
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴zenserp_answer_engine(engine, prompt, additional_prompt, country, brand, ...)

Send a prompt to an AI answer engine (ChatGPT, Perplexity, Gemini or Copilot) and get its answer_text with citations; with brand it also reports whether and where that brand was cited. SPENDS quota at Zenserp's premium per-answer rate (see Zenserp pricing), is slow (seconds to a minute), and must not be repeated needlessly. Plan gate: Medium unlocks ChatGPT, Large adds Perplexity, Premium adds Gemini, Enterprise adds Copilot. GET /v1/answer-engine.

输入模式

{
  "type": "object",
  "properties": {
    "engine": {
      "type": "string",
      "enum": [
        "chatgpt",
        "perplexity",
        "gemini",
        "copilot"
      ],
      "description": "The answer engine to ask."
    },
    "prompt": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4096,
      "description": "The question or prompt. prompt and additional_prompt together may hold at most 4,096 characters."
    },
    "additional_prompt": {
      "description": "An optional follow-up prompt sent with the main one (counts toward the 4,096-character limit shared with prompt).",
      "type": "string",
      "minLength": 1,
      "maxLength": 4096
    },
    "country": {
      "description": "Two-letter country code to localise the answer, e.g. us.",
      "type": "string",
      "pattern": "^[A-Za-z]{2}$"
    },
    "brand": {
      "description": "A brand name to track: the reply then has a brand_visibility object.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "fields": {
      "minItems": 1,
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 60
      },
      "description": "Only return these top-level keys of the reply (for example organic, paid_results, related_searches). Saves context; the call is charged the same."
    }
  },
  "required": [
    "engine",
    "prompt"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢zenserp_list_search_engines

The search engine hosts Zenserp supports (values for search_engine). GET /v2/search_engines. The docs do not say whether helper lists are charged; they are not searches.

输入模式

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢zenserp_list_languages

The supported interface language codes (values for hl). GET /v2/hl.

输入模式

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢zenserp_list_countries

The supported country codes (values for gl). GET /v2/gl.

输入模式

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢zenserp_search_locations(query, limit)

The supported geo locations (values for location), as Google's canonical names. The list is long: pass query to keep only entries that contain it, and limit to cap the count. GET /v2/locations.

输入模式

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Keep only entries whose text contains this (case-insensitive), e.g. 'vienna'.",
      "type": "string",
      "minLength": 2,
      "maxLength": 100
    },
    "limit": {
      "description": "Most entries returned (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

社区

评价此服务器

证据

最近观测

已验证未记录版本19 个工具