/// Tool parameter structs for MCP tool inputs. /// Each struct derives JsonSchema for automatic schema generation, /// and Deserialize for parsing from MCP tool call arguments. use schemars::JsonSchema; use serde::Deserialize; #[derive(Debug, Deserialize, JsonSchema)] pub struct ScrapeParams { /// URL to scrape pub url: String, /// Output format: "markdown" (default), "llm", "text", or "json" pub format: Option, /// CSS selectors to include (only extract matching elements) pub include_selectors: Option>, /// CSS selectors to exclude from output pub exclude_selectors: Option>, /// If true, extract only the main content (article/main element) pub only_main_content: Option, /// Browser profile: "chrome" (default), "firefox", or "random" pub browser: Option, } #[derive(Debug, Deserialize, JsonSchema)] pub struct CrawlParams { /// Seed URL to start crawling from pub url: String, /// Maximum link depth to follow (default: 2) pub depth: Option, /// Maximum number of pages to crawl (default: 50) pub max_pages: Option, /// Number of concurrent requests (default: 5) pub concurrency: Option, /// Seed the frontier from sitemap discovery before crawling pub use_sitemap: Option, /// Output format for each page: "markdown" (default), "llm", "text" pub format: Option, } #[derive(Debug, Deserialize, JsonSchema)] pub struct MapParams { /// Base URL to discover sitemaps from (e.g. ``) pub url: String, } #[derive(Debug, Deserialize, JsonSchema)] pub struct BatchParams { /// List of URLs to extract content from pub urls: Vec, /// Output format: "markdown" (default), "llm", "text" pub format: Option, /// Number of concurrent requests (default: 5) pub concurrency: Option, } #[derive(Debug, Deserialize, JsonSchema)] pub struct ExtractParams { /// URL to fetch and extract structured data from pub url: String, /// Natural language prompt describing what to extract pub prompt: Option, /// JSON schema describing the structure to extract pub schema: Option, } #[derive(Debug, Deserialize, JsonSchema)] pub struct SummarizeParams { /// URL to fetch and summarize pub url: String, /// Number of sentences in the summary (default: 3) pub max_sentences: Option, } #[derive(Debug, Deserialize, JsonSchema)] pub struct DiffParams { /// URL to fetch current content from pub url: String, /// Previous extraction snapshot as a JSON string (ExtractionResult) pub previous_snapshot: String, } #[derive(Debug, Deserialize, JsonSchema)] pub struct BrandParams { /// URL to extract brand identity from pub url: String, } #[derive(Debug, Deserialize, JsonSchema)] pub struct ResearchParams { /// Research query or question to investigate pub query: String, /// Enable deep research mode for more thorough investigation (default: false) pub deep: Option, /// Topic hint to guide research focus (e.g. "technology", "finance", "science") pub topic: Option, } #[derive(Debug, Deserialize, JsonSchema)] pub struct SearchParams { /// Search query pub query: String, /// Number of results to return (default: 10) pub num_results: Option, }