mcp-jina-ai

import { z } from 'zod'; // Common schemas export const TextContentSchema = z.object({ text: z.string(), }); export const ImageContentSchema = z.object({ data: z.string(), // base64 encoded image mimeType: z.string(), }); // Reader schemas export const ReaderRequestSchema = z.object({ url: z.string(), options: z.enum(['Default', 'Markdown', 'HTML', 'Text', 'Screenshot', 'Pageshot']).optional() }); export const ReaderResponseSchema = z.object({ code: z.number(), status: z.number(), data: z.object({ title: z.string(), description: z.string().optional(), url: z.string(), content: z.string(), images: z.record(z.string()).optional(), links: z.record(z.string()).optional(), usage: z.object({ tokens: z.number() }) }) }); export const ReadWebPageSchema = z.object({ url: z.string(), format: z.enum(['Default', 'Markdown', 'HTML', 'Text', 'Screenshot', 'Pageshot']).optional(), with_links: z.boolean().optional(), with_images: z.boolean().optional(), with_generated_alt: z.boolean().optional(), no_cache: z.boolean().optional() }); export const SearchWebSchema = z.object({ query: z.string(), count: z.number().optional().default(5), retain_images: z.enum(['none', 'all']).optional().default('none'), with_generated_alt: z.boolean().optional().default(true), return_format: z.enum(['markdown', 'text', 'html']).optional().default('markdown') }); export const SearchResponseSchema = z.object({ code: z.number(), status: z.number(), data: z.array(z.object({ title: z.string(), description: z.string().optional(), url: z.string(), content: z.string(), images: z.record(z.string()).optional(), links: z.record(z.string()).optional(), usage: z.object({ tokens: z.number() }) })) }); export const GroundingSchema = z.object({ statement: z.string(), deepdive: z.boolean().optional().default(false) }); export const GroundingReferenceSchema = z.object({ url: z.string(), keyQuote: z.string(), isSupportive: z.boolean() }); export const GroundingResponseSchema = z.object({ code: z.number(), status: z.number(), data: z.object({ factuality: z.number(), result: z.boolean(), reason: z.string(), references: z.array(GroundingReferenceSchema) }) }); export type ReaderRequest = z.infer<typeof ReaderRequestSchema>; export type ReaderResponse = z.infer<typeof ReaderResponseSchema>; export type SearchWebRequest = z.infer<typeof SearchWebSchema>; export type SearchResponse = z.infer<typeof SearchResponseSchema>; export type GroundingRequest = z.infer<typeof GroundingSchema>; export type GroundingResponse = z.infer<typeof GroundingResponseSchema>;