Skip to main content
Glama

Search1API MCP Server

types.ts6.61 kB
export interface SearchResult { title: string; link: string; snippet: string; content?: string; } export interface SearchResponse { searchParameters: { query: string; search_service: string; max_results: number; [key: string]: any; }; results: SearchResult[]; } export enum SearchService { GOOGLE = "google", BING = "bing", DUCKDUCKGO = "duckduckgo", YAHOO = "yahoo", GITHUB = "github", YOUTUBE = "youtube", X = "x", REDDIT = "reddit", ARXIV = "arxiv", WECHAT = "wechat", BILIBILI = "bilibili", IMDB = "imdb", WIKIPEDIA = "wikipedia", } export enum NewsService { GOOGLE = "google", BING = "bing", DUCKDUCKGO = "duckduckgo", YAHOO = "yahoo", HACKERNEWS = "hackernews" } export enum TimeRange { DAY = "day", MONTH = "month", YEAR = "year" } export interface SearchArgs { query: string; max_results?: number; search_service?: SearchService; crawl_results?: number; include_sites?: string[]; exclude_sites?: string[]; time_range?: TimeRange; } export function isValidSearchArgs(args: unknown): args is SearchArgs { if (typeof args !== 'object' || args === null) { return false; } const { query, max_results, search_service, crawl_results, include_sites, exclude_sites, time_range } = args as SearchArgs; if (typeof query !== 'string' || query.trim().length === 0) { return false; } if (max_results !== undefined && (typeof max_results !== 'number' || max_results < 1 || max_results > 50)) { return false; } if (search_service !== undefined) { const validServices = Object.values(SearchService); if (!validServices.includes(search_service)) { return false; } } if (crawl_results !== undefined && (typeof crawl_results !== 'number' || crawl_results < 0)) { return false; } if (include_sites !== undefined && (!Array.isArray(include_sites) || !include_sites.every(site => typeof site === 'string'))) { return false; } if (exclude_sites !== undefined && (!Array.isArray(exclude_sites) || !exclude_sites.every(site => typeof site === 'string'))) { return false; } if (time_range !== undefined) { const validTimeRanges = Object.values(TimeRange); if (!validTimeRanges.includes(time_range)) { return false; } } return true; } export interface CrawlResult { title: string; link: string; content: string; } export interface CrawlResponse { crawlParameters: { url: string; }; results: CrawlResult; } export interface CrawlArgs { url: string; } export function isValidCrawlArgs(args: unknown): args is CrawlArgs { if (typeof args !== 'object' || args === null) { return false; } const { url } = args as CrawlArgs; if (typeof url !== 'string' || url.trim().length === 0) { return false; } return true; } export interface SitemapResponse { links: string[]; } export interface SitemapArgs { url: string; } export function isValidSitemapArgs(args: unknown): args is SitemapArgs { if (typeof args !== 'object' || args === null) { return false; } const { url } = args as SitemapArgs; if (typeof url !== 'string' || url.trim().length === 0) { return false; } return true; } export interface NewsResult { title: string; link: string; snippet: string; content?: string; } export interface NewsResponse { searchParameters: { query: string; search_service: string; max_results: number; [key: string]: any; }; results: NewsResult[]; } export interface NewsArgs { query: string; max_results?: number; search_service?: NewsService; crawl_results?: number; include_sites?: string[]; exclude_sites?: string[]; time_range?: TimeRange; } export function isValidNewsArgs(args: unknown): args is NewsArgs { if (typeof args !== 'object' || args === null) { return false; } const { query, max_results, search_service, crawl_results, include_sites, exclude_sites, time_range } = args as NewsArgs; if (typeof query !== 'string' || query.trim().length === 0) { return false; } if (max_results !== undefined && (typeof max_results !== 'number' || max_results < 1 || max_results > 50)) { return false; } if (search_service !== undefined) { const validServices = Object.values(NewsService); if (!validServices.includes(search_service)) { return false; } } if (crawl_results !== undefined && (typeof crawl_results !== 'number' || crawl_results < 0)) { return false; } if (include_sites !== undefined && (!Array.isArray(include_sites) || !include_sites.every(site => typeof site === 'string'))) { return false; } if (exclude_sites !== undefined && (!Array.isArray(exclude_sites) || !exclude_sites.every(site => typeof site === 'string'))) { return false; } if (time_range !== undefined) { const validTimeRanges = Object.values(TimeRange); if (!validTimeRanges.includes(time_range)) { return false; } } return true; } export interface ReasoningArgs { content: string; } export interface ReasoningResponse { choices: [{ message: { content: string; role: string; }; finish_reason: string; index: number; }]; } export function isValidReasoningArgs(args: unknown): args is ReasoningArgs { if (typeof args !== 'object' || args === null) { return false; } const { content } = args as ReasoningArgs; if (typeof content !== 'string' || content.trim().length === 0) { return false; } return true; } export enum TrendingService { GITHUB = "github", HACKERNEWS = "hackernews" } export interface TrendingResult { title: string; url: string; description?: string; } export interface TrendingResponse { trendingParameters: { search_service: string; max_results: number; [key: string]: any; }; results: TrendingResult[]; } export interface TrendingArgs { search_service: TrendingService; max_results?: number; } export function isValidTrendingArgs(args: unknown): args is TrendingArgs { if (typeof args !== 'object' || args === null) { return false; } const { search_service, max_results } = args as TrendingArgs; if (search_service === undefined) { return false; } const validServices = Object.values(TrendingService); if (!validServices.includes(search_service)) { return false; } if (max_results !== undefined && (typeof max_results !== 'number' || max_results < 1 || max_results > 50)) { return false; } return true; }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/fatwang2/search1api-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server