{
  "app.allow_registrations": {
    "category": "app_interface",
    "description": "Allow new user registrations through the web interface. Configured via LDR_APP_ALLOW_REGISTRATIONS environment variable. Set to 'false' to disable on public-facing deployments. Enabled by default so initial account creation works out of the box. Requires server restart.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Allow Registrations",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": true,
    "visible": false
  },
  "app.debug": {
    "category": "app_interface",
    "description": "Produces more informative errors when something goes wrong, but may expose sensitive data. Configured via LDR_APP_DEBUG environment variable. Requires server restart.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Debug Mode",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": false,
    "visible": false
  },
  "app.enable_file_logging": {
    "category": "app_interface",
    "description": "Enable logging to files (WARNING: Log files are unencrypted and may contain sensitive data)",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Enable File Logging",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "app.enable_notifications": {
    "category": "app_interface",
    "description": "Enable browser push notifications to alert you when research completes or encounters errors. Requires browser permission to display notifications.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Enable Notifications",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "app.enable_web": {
    "category": "app_interface",
    "description": "Enable the web interface. When disabled, the application runs in CLI-only mode. Requires server restart to take effect.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Enable Web Server",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "app.external_url": {
    "category": "app_interface",
    "description": "Public URL where this application is accessible (e.g., http://localhost:5000, https://myapp.example.com). Used for generating links in notifications. Leave empty to auto-detect from request context.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "External URL",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "text",
    "value": "",
    "visible": true
  },
  "app.host": {
    "category": "app_interface",
    "description": "IP address or hostname for the web server to bind to. Use '0.0.0.0' to accept connections from any network interface, '127.0.0.1' for localhost only, or a specific IP for targeted access. Requires server restart.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Web Host",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "text",
    "value": "0.0.0.0",
    "visible": true
  },
  "app.lock_settings": {
    "category": "app_interface",
    "description": "When enabled, prevents any modifications to settings through the UI. Useful for locking configuration in production environments. Must be changed directly in the database to re-enable editing.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Lock Settings",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": false,
    "visible": false
  },
  "app.max_concurrent_researches": {
    "category": "app_interface",
    "description": "Maximum number of concurrent research processes allowed per user",
    "editable": true,
    "env_var": "LDR_MAX_CONCURRENT",
    "max_value": null,
    "min_value": 1,
    "name": "Max Concurrent Researches",
    "options": null,
    "step": 1,
    "type": "APP",
    "ui_element": "number",
    "value": 3,
    "visible": true
  },
  "app.max_global_concurrent_researches": {
    "category": "app_interface",
    "description": "Maximum number of concurrent research processes allowed across all users (server-wide). Set via env var LDR_SERVER_MAX_CONCURRENT_RESEARCH. Requires server restart.",
    "editable": false,
    "env_var": "LDR_SERVER_MAX_CONCURRENT_RESEARCH",
    "max_value": 1000,
    "min_value": 1,
    "name": "Max Global Concurrent Researches",
    "options": null,
    "step": 1,
    "type": "APP",
    "ui_element": "number",
    "value": 10,
    "visible": false
  },
  "app.max_user_query_length": {
    "category": "search_parameters",
    "description": "Maximum character length for user queries before disabling direct search. Longer queries will use LLM-generated questions only.",
    "editable": true,
    "max_value": 1000,
    "min_value": 50,
    "name": "Max User Query Length",
    "type": "SEARCH",
    "ui_element": "number",
    "value": 300,
    "visible": true
  },
  "app.port": {
    "category": "app_interface",
    "description": "TCP port for the web server (1-65535). Requires server restart to take effect.",
    "editable": true,
    "max_value": 65535.0,
    "min_value": 1.0,
    "name": "Web Port",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "number",
    "value": 5000,
    "visible": true
  },
  "app.queue_mode": {
    "category": "app_interface",
    "description": "How new research requests are handled. 'Direct' starts research immediately if a concurrent slot is available. 'Queue' always adds to a background queue for sequential processing in order.",
    "editable": true,
    "env_var": "LDR_QUEUE_MODE",
    "max_value": null,
    "min_value": null,
    "name": "Queue Mode",
    "options": [
      {
        "label": "Direct (Immediate)",
        "value": "direct"
      },
      {
        "label": "Queue (Background)",
        "value": "queue"
      }
    ],
    "step": null,
    "type": "APP",
    "ui_element": "select",
    "value": "direct",
    "visible": true
  },
  "app.theme": {
    "category": "app_interface",
    "description": "User interface color theme. Choose from 20 themes including popular developer themes.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "UI Theme",
    "options": [
      {
        "label": "Ayu Mirage",
        "value": "ayu-mirage"
      },
      {
        "label": "Catppuccin",
        "value": "catppuccin"
      },
      {
        "label": "Dracula",
        "value": "dracula"
      },
      {
        "label": "Everforest Dark",
        "value": "everforest-dark"
      },
      {
        "label": "Everforest Light",
        "value": "everforest-light"
      },
      {
        "label": "Flexoki Dark",
        "value": "flexoki-dark"
      },
      {
        "label": "Flexoki Light",
        "value": "flexoki-light"
      },
      {
        "label": "Forest",
        "value": "forest"
      },
      {
        "label": "Gruvbox Dark",
        "value": "gruvbox-dark"
      },
      {
        "label": "Gruvbox Light",
        "value": "gruvbox-light"
      },
      {
        "label": "Hashed",
        "value": "hashed"
      },
      {
        "label": "High Contrast",
        "value": "high-contrast"
      },
      {
        "label": "Kanagawa",
        "value": "kanagawa"
      },
      {
        "label": "Lavender",
        "value": "lavender"
      },
      {
        "label": "Light",
        "value": "light"
      },
      {
        "label": "Light Owl",
        "value": "light-owl"
      },
      {
        "label": "Midnight",
        "value": "midnight"
      },
      {
        "label": "Monokai",
        "value": "monokai"
      },
      {
        "label": "Night Owl",
        "value": "night-owl"
      },
      {
        "label": "Nord",
        "value": "nord"
      },
      {
        "label": "Ocean",
        "value": "ocean"
      },
      {
        "label": "One Dark",
        "value": "one-dark"
      },
      {
        "label": "Palenight",
        "value": "palenight"
      },
      {
        "label": "Rose",
        "value": "rose"
      },
      {
        "label": "Rosé Pine",
        "value": "rose-pine"
      },
      {
        "label": "Rosé Pine Dawn",
        "value": "rose-pine-dawn"
      },
      {
        "label": "Sepia",
        "value": "sepia"
      },
      {
        "label": "Solarized Dark",
        "value": "solarized-dark"
      },
      {
        "label": "Solarized Light",
        "value": "solarized-light"
      },
      {
        "label": "Sunset",
        "value": "sunset"
      },
      {
        "label": "System",
        "value": "system"
      },
      {
        "label": "Tokyo Night",
        "value": "tokyo-night"
      },
      {
        "label": "Vesper",
        "value": "vesper"
      }
    ],
    "step": null,
    "type": "APP",
    "ui_element": "select",
    "value": "dark",
    "visible": true
  },
  "app.timezone": {
    "category": "app_interface",
    "description": "Timezone for date calculations (e.g., news subscription YYYY-MM-DD placeholder). Use 'UTC' for server time or specify your local timezone.",
    "editable": true,
    "env_var": "TZ",
    "max_value": null,
    "min_value": null,
    "name": "Timezone",
    "options": [
      "UTC",
      "America/New_York",
      "America/Chicago",
      "America/Denver",
      "America/Los_Angeles",
      "America/Anchorage",
      "America/Toronto",
      "America/Vancouver",
      "America/Mexico_City",
      "America/Sao_Paulo",
      "Europe/London",
      "Europe/Paris",
      "Europe/Berlin",
      "Europe/Amsterdam",
      "Europe/Madrid",
      "Europe/Rome",
      "Europe/Moscow",
      "Asia/Dubai",
      "Asia/Kolkata",
      "Asia/Bangkok",
      "Asia/Singapore",
      "Asia/Hong_Kong",
      "Asia/Shanghai",
      "Asia/Tokyo",
      "Asia/Seoul",
      "Australia/Sydney",
      "Australia/Melbourne",
      "Australia/Perth",
      "Pacific/Auckland",
      "Pacific/Honolulu"
    ],
    "step": null,
    "type": "APP",
    "ui_element": "select",
    "value": "UTC",
    "visible": true
  },
  "app.warnings.dismiss_context_reduced": {
    "category": "warnings",
    "description": "Dismiss warnings based on historical context usage and truncation",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Dismiss Context Reduced Warnings",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "app.warnings.dismiss_high_context": {
    "category": "warnings",
    "description": "Permanently hide the warning shown when your local LLM context window is set above 8,192 tokens, which may cause memory issues on some hardware.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Dismiss High Context Warnings",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "app.warnings.dismiss_legacy_config": {
    "category": "warnings",
    "description": "Dismiss warnings about the deprecated server_config.json file",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Dismiss Legacy Config Warnings",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "app.warnings.dismiss_model_mismatch": {
    "category": "warnings",
    "description": "Permanently hide the warning shown when using a large model (70B+ parameters) with a local provider and high context window, which may exceed available GPU memory.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Dismiss Model Mismatch Warnings",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "app.warnings.dismiss_searxng_recommendation": {
    "category": "warnings",
    "description": "Dismiss recommendations about using more questions instead of iterations with SearXNG",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Dismiss SearXNG Optimization Tips",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "app.web_interface": {
    "category": "app_interface",
    "description": "Enable the web interface for the application. When disabled, only CLI and API access is available. Requires server restart to take effect.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Web Interface",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "backup.enabled": {
    "category": "backup",
    "description": "Automatically backup database after successful login. Each backup uses disk space proportional to your database size. Disable this if disk space is limited.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Enable Auto-Backup",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "backup.max_age_days": {
    "category": "backup",
    "description": "Delete backups older than this many days",
    "editable": true,
    "max_value": 90,
    "min_value": 1,
    "name": "Backup Retention (days)",
    "options": null,
    "step": 1,
    "type": "APP",
    "ui_element": "number",
    "value": 7,
    "visible": true
  },
  "backup.max_count": {
    "category": "backup",
    "description": "Maximum number of backup files to keep per user",
    "editable": true,
    "max_value": 30,
    "min_value": 1,
    "name": "Max Backups",
    "options": null,
    "step": 1,
    "type": "APP",
    "ui_element": "number",
    "value": 1,
    "visible": true
  },
  "benchmark.evaluation.endpoint_url": {
    "category": "benchmark",
    "description": "Endpoint URL for evaluation model (when using OpenAI-compatible APIs)",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Evaluation Endpoint URL",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "text",
    "value": "https://openrouter.ai/api/v1",
    "visible": true
  },
  "benchmark.evaluation.model": {
    "category": "benchmark",
    "description": "LLM model used as a judge to score benchmark answers against reference answers (e.g., 'anthropic/claude-3.7-sonnet' for OpenRouter, 'gpt-4o' for OpenAI). Must be compatible with the selected evaluation provider.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Evaluation Model",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "text",
    "value": "anthropic/claude-3.7-sonnet",
    "visible": true
  },
  "benchmark.evaluation.provider": {
    "category": "benchmark",
    "description": "LLM provider used to grade benchmark answers by comparing research outputs against reference answers. This is separate from the research LLM being tested. Options: openai_endpoint (recommended, supports OpenRouter), openai, anthropic, ollama.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Evaluation Provider",
    "options": [
      {
        "label": "OpenRouter (Recommended)",
        "value": "openai_endpoint"
      },
      {
        "label": "OpenAI API",
        "value": "openai"
      },
      {
        "label": "Anthropic API",
        "value": "anthropic"
      },
      {
        "label": "Ollama (Local)",
        "value": "ollama"
      }
    ],
    "step": null,
    "type": "APP",
    "ui_element": "select",
    "value": "openai_endpoint",
    "visible": true
  },
  "benchmark.evaluation.temperature": {
    "category": "benchmark",
    "description": "Sampling temperature for the benchmark judge model (0.0-1.0). Use 0 for deterministic, reproducible grading results. Higher values introduce randomness in evaluation scores.",
    "editable": true,
    "max_value": 1.0,
    "min_value": 0.0,
    "name": "Evaluation Temperature",
    "options": null,
    "step": 0.1,
    "type": "APP",
    "ui_element": "range",
    "value": 0,
    "visible": true
  },
  "document_scheduler.download_pdfs": {
    "category": "document_scheduler",
    "description": "Automatically download PDF files during scheduled document processing. Files will be stored on disk (requires storage space). WARNING: Downloaded files are stored unencrypted on disk.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Auto-Download PDFs (Scheduler)",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "document_scheduler.enabled": {
    "category": "document_scheduler",
    "description": "Enable automatic document processing from research history",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Enable Document Scheduler",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "document_scheduler.extract_text": {
    "category": "document_scheduler",
    "description": "Extract text content to database (minimal space usage)",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Extract Text to Database",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "document_scheduler.generate_rag": {
    "category": "document_scheduler",
    "description": "Generate RAG embeddings for semantic search",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Generate RAG Embeddings",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "document_scheduler.interval_seconds": {
    "category": "document_scheduler",
    "description": "How often to process new research (seconds)",
    "editable": true,
    "max_value": 86400,
    "min_value": 60,
    "name": "Processing Interval (seconds)",
    "options": null,
    "step": 60,
    "type": "APP",
    "ui_element": "number",
    "value": 1800,
    "visible": true
  },
  "embeddings.ollama.url": {
    "category": "embeddings",
    "description": "URL of the Ollama endpoint for embedding models. This setting allows you to use a different Ollama server for embeddings than for LLM operations. If not set, the system will fall back to the LLM Ollama URL.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Ollama Embeddings Endpoint URL",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "text",
    "value": "http://localhost:11434",
    "visible": true
  },
  "focused_iteration.adaptive_questions": {
    "category": "focused_iteration",
    "description": "When enabled (1), the system monitors recent search success and warns the LLM to broaden queries if 3+ searches in a recent window returned no results. When disabled (0), queries are generated without feedback from previous result counts.",
    "editable": true,
    "max_value": 1,
    "min_value": 0,
    "name": "Adaptive Question Generation",
    "options": null,
    "step": 1,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "focused_iteration.knowledge_summary_limit": {
    "category": "focused_iteration",
    "description": "Limits the number of top search results included in the knowledge summary shown to the LLM during question generation. Set to 10 to show only the top 10 results, reducing token usage. Set to 0 for unlimited. Note: This only affects question generation prompts — final answer synthesis always uses all results.",
    "editable": true,
    "max_value": 100,
    "min_value": 0,
    "name": "Results Shown for Question Generation",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 10,
    "visible": true
  },
  "focused_iteration.previous_searches_limit": {
    "category": "focused_iteration",
    "description": "Maximum number of recent search iterations to show the LLM when generating follow-up questions. Helps the LLM avoid duplicate queries and reduces token usage. Set to 0 for unlimited (show all previous searches). When active, also caps displayed queries per iteration to 3.",
    "editable": true,
    "max_value": 100,
    "min_value": 0,
    "name": "Previous Searches Shown",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 10,
    "visible": true
  },
  "focused_iteration.prompt_knowledge_truncate": {
    "category": "focused_iteration",
    "description": "Maximum characters of accumulated knowledge to include in the LLM prompt for follow-up question generation. Applied after 'Results Shown for Question Generation' selects the top N results — this further truncates that combined text to a character limit. Set to 0 for unlimited.",
    "editable": true,
    "max_value": 10000,
    "min_value": 0,
    "name": "Prompt Knowledge Truncation",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 1500,
    "visible": true
  },
  "focused_iteration.question_generator": {
    "category": "focused_iteration",
    "description": "Algorithm for generating follow-up search queries. 'browsecomp' (default): Systematically extracts and combines entities (names, dates, locations) for predictable, focused searches. 'flexible': Allows the LLM more freedom to explore diverse search strategies — less rigid but may be less consistent.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Question Generation Algorithm",
    "options": [
      "browsecomp",
      "flexible"
    ],
    "step": null,
    "type": "SEARCH",
    "ui_element": "select",
    "value": "browsecomp",
    "visible": true
  },
  "focused_iteration.snippet_truncate": {
    "category": "focused_iteration",
    "description": "Maximum characters per snippet when showing search results to LLM for question generation. Shorter snippets (e.g., 200) reduce token usage and keep context focused. Set to 0 for full snippets. NOTE: This only affects question generation - the final answer synthesis sees full snippets.",
    "editable": true,
    "max_value": 1000,
    "min_value": 0,
    "name": "Snippet Length for Question Generation",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 200,
    "visible": true
  },
  "general.enable_fact_checking": {
    "category": null,
    "description": "Enable LLM-based fact verification for research findings. Adds additional validation pass to check claims against sources.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Enable Fact Checking",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "general.knowledge_accumulation": {
    "category": null,
    "description": "How to compress accumulated knowledge between search iterations. 'ITERATION': Compress and carry forward knowledge after each iteration completes (default). 'QUESTION': Compress after every individual question within an iteration (more aggressive, saves tokens). 'NO_KNOWLEDGE': Start fresh each iteration with no carried-forward context.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Knowledge Accumulation",
    "options": [
      {
        "label": "Per Iteration",
        "value": "ITERATION"
      },
      {
        "label": "Per Question",
        "value": "QUESTION"
      },
      {
        "label": "No Knowledge Accumulation",
        "value": "NO_KNOWLEDGE"
      }
    ],
    "step": null,
    "type": "APP",
    "ui_element": "select",
    "value": "ITERATION",
    "visible": true
  },
  "general.knowledge_accumulation_context_limit": {
    "category": null,
    "description": "Maximum character count for accumulated knowledge context. Reserved for future use — not currently enforced at runtime.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Knowledge Accumulation Context Limit",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "number",
    "value": 2000000,
    "visible": false
  },
  "general.output_instructions": {
    "category": "general",
    "description": "Customize how research outputs are formatted: language, tone, style, formatting preferences, audience level, etc. Examples: 'Respond in Spanish with formal tone' | 'Use simple language for beginners' | 'Be concise with bullet points'. Leave empty for default English output.",
    "editable": true,
    "max_value": 1500,
    "min_value": null,
    "name": "Output Instructions",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "textarea",
    "value": "",
    "visible": true
  },
  "llm.anthropic.api_key": {
    "category": "llm_general",
    "description": "Your Anthropic API key for Claude models. Get one at console.anthropic.com. Required when using the Anthropic provider.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Anthropic API Key",
    "options": null,
    "step": null,
    "type": "LLM",
    "ui_element": "password",
    "value": "",
    "visible": true
  },
  "llm.context_window_size": {
    "category": "llm_parameters",
    "description": "Maximum context window size in tokens for cloud LLMs. Only used when unrestricted context is disabled.",
    "editable": true,
    "max_value": 20000000.0,
    "min_value": 512.0,
    "name": "Cloud Provider Context Window Limit",
    "options": null,
    "step": null,
    "type": "LLM",
    "ui_element": "number",
    "value": 128000,
    "visible": true
  },
  "llm.context_window_unrestricted": {
    "category": "llm_parameters",
    "description": "Let cloud provider APIs manage their own token limits without a hard cap (recommended). Uncheck to enforce a specific limit via the Context Window Size setting.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Use Unrestricted Cloud Context Window",
    "options": null,
    "step": null,
    "type": "LLM",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "llm.google.api_key": {
    "category": "llm_general",
    "description": "API key to use for the Google Gemini provider.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Google API Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "password",
    "value": null,
    "visible": true
  },
  "llm.ionos.api_key": {
    "category": "llm_general",
    "description": "API key to use for the IONOS AI Model Hub provider.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "IONOS API Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "password",
    "value": null,
    "visible": true
  },
  "llm.llamacpp_f16_kv": {
    "category": null,
    "description": "Use 16-bit floating point for LlamaCpp's key-value cache. Reduces memory usage compared to 32-bit; disable only if you need higher precision and have enough VRAM.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Llamacpp F16 Kv",
    "options": null,
    "step": null,
    "type": "LLM",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "llm.llamacpp_model_path": {
    "category": null,
    "description": "Path to GGUF model file relative to models directory (~/.local/share/llm_models/). For llama.cpp server connections, use 'openai_endpoint' provider instead with the server's /v1 URL.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Llamacpp Model Path",
    "options": null,
    "step": null,
    "type": "LLM",
    "ui_element": "text",
    "value": "",
    "visible": true
  },
  "llm.llamacpp_n_batch": {
    "category": null,
    "description": "Batch size for LlamaCpp token processing. Higher values improve inference speed but increase memory usage. Reduce if experiencing out-of-memory errors.",
    "editable": true,
    "max_value": null,
    "min_value": 1,
    "name": "Llamacpp N Batch",
    "options": null,
    "step": null,
    "type": "LLM",
    "ui_element": "number",
    "value": 512,
    "visible": true
  },
  "llm.llamacpp_n_gpu_layers": {
    "category": null,
    "description": "Number of model layers to offload to GPU for acceleration in LlamaCpp. 0 = CPU only, higher values = more GPU usage and faster inference. Set based on your available VRAM.",
    "editable": true,
    "max_value": null,
    "min_value": 0,
    "name": "Llamacpp N Gpu Layers",
    "options": null,
    "step": null,
    "type": "LLM",
    "ui_element": "number",
    "value": 1,
    "visible": true
  },
  "llm.lmstudio.url": {
    "category": null,
    "description": "HTTP endpoint URL where LM Studio is running locally. Include the full path (e.g., http://localhost:1234/v1 for OpenAI-compatible API format).",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Lmstudio Url",
    "options": null,
    "step": null,
    "type": "LLM",
    "ui_element": "text",
    "value": "http://localhost:1234/v1",
    "visible": true
  },
  "llm.local_context_window_size": {
    "category": "llm_parameters",
    "description": "Context window size in tokens for local LLMs (Ollama, LlamaCpp, LM Studio). Default is conservative (4096 tokens). Increase if your model and hardware support larger contexts.",
    "editable": true,
    "max_value": 131072.0,
    "min_value": 512.0,
    "name": "Local Provider Context Window Size",
    "options": null,
    "step": 512.0,
    "type": "LLM",
    "ui_element": "number",
    "value": 10000,
    "visible": true
  },
  "llm.max_tokens": {
    "category": "llm_parameters",
    "description": "Maximum tokens in model responses. Automatically capped at 80% of the context window size to leave room for prompt tokens.",
    "editable": true,
    "max_value": 100000,
    "min_value": 100.0,
    "name": "Max Tokens",
    "options": null,
    "step": null,
    "type": "LLM",
    "ui_element": "number",
    "value": 30000,
    "visible": true
  },
  "llm.model": {
    "category": "llm_general",
    "description": "The language model to use. Available models depend on the selected provider (e.g., 'gpt-4o' for OpenAI, 'gemma:7b' for Ollama). You can type any model name supported by your provider.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "LLM Model",
    "options": [
      {
        "label": "GPT-4o (OpenAI)",
        "value": "gpt-4o"
      },
      {
        "label": "GPT-3.5 Turbo (OpenAI)",
        "value": "gpt-3.5-turbo"
      },
      {
        "label": "Claude 3.5 Sonnet (Anthropic)",
        "value": "claude-3-5-sonnet-latest"
      },
      {
        "label": "Claude 3 Opus (Anthropic)",
        "value": "claude-3-opus-20240229"
      },
      {
        "label": "Llama 3 (Meta)",
        "value": "llama3"
      },
      {
        "label": "Mistral (Mistral AI)",
        "value": "mistral"
      },
      {
        "label": "Mixtral (Mistral AI)",
        "value": "mixtral"
      }
    ],
    "step": null,
    "type": "LLM",
    "ui_element": "select",
    "value": "gemma3:12b",
    "visible": true
  },
  "llm.ollama.enable_thinking": {
    "category": "llm",
    "description": "Enable thinking/reasoning mode for models like deepseek-r1 and qwen2.5. When enabled (recommended), the model performs internal reasoning for more accurate answers, but the reasoning content is automatically separated and excluded from the final response. When disabled, the model gives faster but potentially less accurate direct answers without reasoning.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Ollama Enable Thinking",
    "options": null,
    "step": null,
    "type": "LLM",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "llm.ollama.url": {
    "category": null,
    "description": "HTTP endpoint URL where Ollama is running. Used to connect to local or remote Ollama instances for model inference.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Ollama Endpoint Url",
    "options": null,
    "step": null,
    "type": "LLM",
    "ui_element": "text",
    "value": "http://localhost:11434",
    "visible": true
  },
  "llm.openai.api_key": {
    "category": "llm_general",
    "description": "Your OpenAI API key for GPT models. Get one at platform.openai.com. Required when using the OpenAI provider.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "OpenAI API Key",
    "options": null,
    "step": null,
    "type": "LLM",
    "ui_element": "password",
    "value": "",
    "visible": true
  },
  "llm.openai_endpoint.api_key": {
    "category": "llm_general",
    "description": "API key for your custom OpenAI-compatible endpoint. For cloud services (OpenRouter, Groq), use your actual API key. For local servers (llama.cpp, vLLM), use any non-empty value like 'not-needed'.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "OpenAI Endpoint API Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "password",
    "value": "",
    "visible": true
  },
  "llm.openai_endpoint.url": {
    "category": null,
    "description": "URL of a custom OpenAI-compatible API endpoint. Use for llama.cpp server, vLLM, Ollama, OpenRouter, Groq, Together, or any service that implements the OpenAI API format. Example for local llama.cpp: http://localhost:8000/v1",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Openai Endpoint Url",
    "options": null,
    "step": null,
    "type": "LLM",
    "ui_element": "text",
    "value": "https://openrouter.ai/api/v1",
    "visible": true
  },
  "llm.openrouter.api_key": {
    "category": "llm_general",
    "description": "API key to use for the OpenRouter provider.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "OpenRouter API Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "password",
    "value": null,
    "visible": true
  },
  "llm.provider": {
    "category": "llm_general",
    "description": "The LLM service provider. Choose local providers (Ollama, LM Studio, LlamaCpp) for free on-device inference, or cloud APIs (OpenAI, Anthropic, Google, OpenRouter) for hosted models.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "LLM Provider",
    "options": [
      {
        "label": "OpenAI API",
        "value": "openai"
      },
      {
        "label": "Anthropic API",
        "value": "anthropic"
      },
      {
        "label": "Ollama (Local)",
        "value": "ollama"
      },
      {
        "label": "LM Studio (Local)",
        "value": "lmstudio"
      },
      {
        "label": "OpenAI-Compatible Endpoint (llama.cpp, vLLM, etc.)",
        "value": "openai_endpoint"
      },
      {
        "label": "Google Gemini API",
        "value": "google"
      },
      {
        "label": "OpenRouter API",
        "value": "openrouter"
      }
    ],
    "step": null,
    "type": "LLM",
    "ui_element": "select",
    "value": "OLLAMA",
    "visible": true
  },
  "llm.supports_max_tokens": {
    "category": "llm_parameters",
    "description": "Feature flag for max_tokens parameter. Disable if your LLM API returns errors when max_tokens is set. When disabled, the parameter is not passed to the API.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Supports 'Max Tokens'",
    "options": null,
    "step": null,
    "type": "LLM",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "llm.temperature": {
    "category": "llm_parameters",
    "description": "Controls randomness in model outputs. Lower values (0.0-0.3) produce deterministic, factual responses; higher values (0.7-1.0) produce more creative and varied outputs.",
    "editable": true,
    "max_value": 1.0,
    "min_value": 0.0,
    "name": "Temperature",
    "options": null,
    "step": 0.05,
    "type": "LLM",
    "ui_element": "range",
    "value": 0.7,
    "visible": true
  },
  "llm.xai.api_key": {
    "category": "llm_general",
    "description": "API key to use for the xAI Grok provider.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "xAI API Key",
    "options": null,
    "step": null,
    "type": "LLM",
    "ui_element": "password",
    "value": null,
    "visible": true
  },
  "news.display.default_headline_max_length": {
    "category": "news",
    "description": "Default maximum headline length",
    "editable": true,
    "max_value": 300,
    "min_value": 50,
    "name": "Default Headline Max Length",
    "options": null,
    "step": 10,
    "type": "APP",
    "ui_element": "number",
    "value": 100,
    "visible": true
  },
  "news.display.max_query_length": {
    "category": "news",
    "description": "Maximum query display length in UI",
    "editable": true,
    "max_value": 200,
    "min_value": 20,
    "name": "Max Query Display Length",
    "options": null,
    "step": 10,
    "type": "APP",
    "ui_element": "number",
    "value": 50,
    "visible": true
  },
  "news.feed.default_limit": {
    "category": "news",
    "description": "Default number of news items returned per feed page. Applied when user does not specify a limit in the request. Also used as the default limit for subscription history.",
    "editable": true,
    "max_value": 100,
    "min_value": 5,
    "name": "Default Feed Limit",
    "options": null,
    "step": 5,
    "type": "APP",
    "ui_element": "number",
    "value": 20,
    "visible": true
  },
  "news.preferences.max_stored": {
    "category": "news",
    "description": "Maximum number of stored preferences per user",
    "editable": true,
    "max_value": 500,
    "min_value": 10,
    "name": "Max Stored Preferences",
    "options": null,
    "step": 10,
    "type": "APP",
    "ui_element": "number",
    "value": 100,
    "visible": true
  },
  "news.progress.complete": {
    "category": "news",
    "description": "Progress percentage when complete",
    "editable": false,
    "max_value": 100,
    "min_value": 0,
    "name": "Progress Complete",
    "options": null,
    "step": 1,
    "type": "APP",
    "ui_element": "number",
    "value": 100,
    "visible": false
  },
  "news.progress.generating_searches": {
    "category": "news",
    "description": "Progress percentage when generating searches",
    "editable": false,
    "max_value": 100,
    "min_value": 0,
    "name": "Progress Generating Searches",
    "options": null,
    "step": 1,
    "type": "APP",
    "ui_element": "number",
    "value": 50,
    "visible": false
  },
  "news.refresh.default_hours": {
    "category": "news",
    "description": "Default refresh interval in hours",
    "editable": true,
    "max_value": 24,
    "min_value": 1,
    "name": "Default Refresh Hours",
    "options": null,
    "step": 1,
    "type": "APP",
    "ui_element": "number",
    "value": 4,
    "visible": true
  },
  "news.scheduler.activity_check_interval": {
    "category": "news_scheduler",
    "description": "How often (in minutes) the scheduler scans for subscriptions that are due to run. More frequent checks ensure timely updates but increase CPU usage. Range: 1-60 minutes.",
    "editable": true,
    "max_value": 60,
    "min_value": 1,
    "name": "Activity Check Interval (minutes)",
    "options": null,
    "step": 1,
    "type": "APP",
    "ui_element": "number",
    "value": 5,
    "visible": true
  },
  "news.scheduler.allow_api_control": {
    "category": "news_scheduler",
    "description": "Allow authenticated users to start, stop, and trigger the global news scheduler via API. This setting cannot be changed from the UI for security reasons. Disable in multi-user deployments by setting the environment variable LDR_NEWS_SCHEDULER_ALLOW_API_CONTROL=false.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Allow Scheduler API Control",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "news.scheduler.batch_size": {
    "category": "news_scheduler",
    "description": "Number of due subscriptions to pick up and schedule in each check cycle. Larger batches are more efficient but use more memory. Range: 1-20.",
    "editable": true,
    "max_value": 20,
    "min_value": 1,
    "name": "Subscription Batch Size",
    "options": null,
    "step": 1,
    "type": "APP",
    "ui_element": "number",
    "value": 5,
    "visible": true
  },
  "news.scheduler.cleanup_interval_hours": {
    "category": "news_scheduler",
    "description": "How often (in hours) the scheduler checks for and removes expired user sessions. Shorter intervals reduce memory usage but add slight overhead. Range: 0.25-24 hours.",
    "editable": true,
    "max_value": 24,
    "min_value": 0.25,
    "name": "Cleanup Interval (hours)",
    "options": null,
    "step": 0.25,
    "type": "APP",
    "ui_element": "number",
    "value": 1,
    "visible": true
  },
  "news.scheduler.enabled": {
    "category": "news_scheduler",
    "description": "Enable the background scheduler that automatically runs news subscriptions on their configured intervals. When disabled, no automatic subscription processing occurs — subscriptions must be refreshed manually.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Enable News Scheduler",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "news.scheduler.max_concurrent_jobs": {
    "category": "news_scheduler",
    "description": "Maximum number of subscription refresh tasks that can run simultaneously across all users. Lower values reduce server load; higher values process subscriptions faster. Range: 1-50.",
    "editable": true,
    "max_value": 50,
    "min_value": 1,
    "name": "Max Concurrent Jobs",
    "options": null,
    "step": 1,
    "type": "APP",
    "ui_element": "number",
    "value": 10,
    "visible": true
  },
  "news.scheduler.max_jitter_seconds": {
    "category": "news_scheduler",
    "description": "Maximum random delay (in seconds) added to each subscription's next refresh time. Prevents all subscriptions from running simultaneously, reducing server load spikes. Range: 0-3600 seconds.",
    "editable": true,
    "max_value": 3600,
    "min_value": 0,
    "name": "Maximum Jitter (seconds)",
    "options": null,
    "step": 1,
    "type": "APP",
    "ui_element": "number",
    "value": 300,
    "visible": true
  },
  "news.scheduler.retention_hours": {
    "category": "news_scheduler",
    "description": "Hours to keep a user's session active in the scheduler after their last interaction. After this period, the scheduler stops processing that user's subscriptions until they log in again. Range: 1-168 hours.",
    "editable": true,
    "max_value": 168,
    "min_value": 1,
    "name": "User Retention Period (hours)",
    "options": null,
    "step": 1,
    "type": "APP",
    "ui_element": "number",
    "value": 48,
    "visible": true
  },
  "news.storage.default_limit": {
    "category": "news",
    "description": "Default limit for storing news items",
    "editable": true,
    "max_value": 500,
    "min_value": 10,
    "name": "Default Storage Limit",
    "options": null,
    "step": 10,
    "type": "APP",
    "ui_element": "number",
    "value": 100,
    "visible": true
  },
  "news.subscription.default_type": {
    "category": "news",
    "description": "Default subscription type",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Default Subscription Type",
    "options": [
      {
        "label": "Search",
        "value": "search"
      },
      {
        "label": "Topic",
        "value": "topic"
      }
    ],
    "step": null,
    "type": "APP",
    "ui_element": "select",
    "value": "search",
    "visible": true
  },
  "news.subscription.refresh_minutes": {
    "category": "news",
    "description": "Default interval (in minutes) for how often new subscriptions check for updates. Users can override this per subscription. Default is 240 minutes (4 hours). Range: 60-2880 minutes.",
    "editable": true,
    "max_value": 2880,
    "min_value": 60,
    "name": "Subscription Refresh Minutes",
    "options": null,
    "step": 60,
    "type": "APP",
    "ui_element": "number",
    "value": 360,
    "visible": true
  },
  "news.trending.lookback_hours": {
    "category": "news",
    "description": "Hours to look back for trending analysis",
    "editable": true,
    "max_value": 168,
    "min_value": 1,
    "name": "Trending Lookback Hours",
    "options": null,
    "step": 1,
    "type": "APP",
    "ui_element": "number",
    "value": 24,
    "visible": true
  },
  "notifications.enabled": {
    "category": "notifications",
    "description": "Enable external notifications for research events (email, Discord, Slack, etc.). When disabled, no notifications are sent regardless of individual event settings below. Requires service URL to be configured.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Enable Notifications",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "notifications.on_api_quota_warning": {
    "category": "notifications",
    "description": "Send notification when API quota or rate limits are approaching or exceeded. Helps prevent service interruptions from unexpected API usage limits.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "API Quota Warnings",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "notifications.on_auth_issue": {
    "category": "notifications",
    "description": "Send notification when authentication fails for external API services (e.g., invalid or expired API keys). Alerts you to broken integrations that need attention.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Authentication Issues",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "notifications.on_research_completed": {
    "category": "notifications",
    "description": "Send notification when a research task completes successfully. This is the primary completion alert for tracking long-running research.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Research Completed",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "notifications.on_research_failed": {
    "category": "notifications",
    "description": "Send notification when a research task fails or encounters an error. Enables rapid problem detection without monitoring the web interface.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Research Failed",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "notifications.on_research_queued": {
    "category": "notifications",
    "description": "Send notification when research is added to the processing queue. Useful in queue mode to confirm your request was accepted and is waiting to be processed.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Research Queued",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "notifications.on_subscription_error": {
    "category": "notifications",
    "description": "Send notification when a subscription refresh fails or encounters errors. Helps identify broken subscriptions that need attention.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Subscription Errors",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "notifications.on_subscription_update": {
    "category": "notifications",
    "description": "Send notification when news subscriptions detect new content matching your configured topics.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Subscription Updates",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "notifications.rate_limit_per_day": {
    "category": "notifications",
    "description": "Maximum number of notifications per day per user. Daily cap prevents notification fatigue. Default of 50 balances staying informed with avoiding excessive alerts.",
    "editable": true,
    "max_value": 500,
    "min_value": 1,
    "name": "Rate Limit (Daily)",
    "options": null,
    "step": 1,
    "type": "APP",
    "ui_element": "number",
    "value": 50,
    "visible": true
  },
  "notifications.rate_limit_per_hour": {
    "category": "notifications",
    "description": "Maximum number of notifications per hour per user. Prevents notification spam during burst activity. Default of 10 allows important notifications through while limiting noise.",
    "editable": true,
    "max_value": 100,
    "min_value": 1,
    "name": "Rate Limit (Hourly)",
    "options": null,
    "step": 1,
    "type": "APP",
    "ui_element": "number",
    "value": 10,
    "visible": true
  },
  "notifications.service_url": {
    "category": "notifications",
    "description": "Notification service URL(s). Supports multiple comma-separated URLs to send notifications to multiple destinations (e.g., discord://YOUR_WEBHOOK_ID/YOUR_TOKEN, mailto://YOUR_USER:YOUR_PASS@smtp.example.com?to=recipient@example.com). See <a href=\"https://github.com/LearningCircuit/local-deep-research/blob/main/docs/NOTIFICATIONS.md\" target=\"_blank\">documentation</a> for supported services.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Service URL(s)",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "textarea",
    "value": "",
    "visible": true
  },
  "rag.indexing_batch_size": {
    "category": "research_library",
    "description": "Number of documents to process in parallel during RAG indexing. Higher values are faster but use more memory.",
    "editable": true,
    "max_value": 50,
    "min_value": 1,
    "name": "RAG Indexing Batch Size",
    "options": null,
    "step": 5,
    "type": "APP",
    "ui_element": "number",
    "value": 15,
    "visible": true
  },
  "rate_limiting.decay_per_day": {
    "category": "rate_limiting",
    "description": "How much to trust old rate limit data as it ages (0.5-0.99). At 0.95, data retains 95% reliability per day. Lower values discard old data faster, forcing the system to re-learn optimal wait times.",
    "editable": true,
    "max_value": 0.99,
    "min_value": 0.5,
    "name": "Decay Factor Per Day",
    "options": null,
    "step": 0.01,
    "type": "APP",
    "ui_element": "range",
    "value": 0.95,
    "visible": true
  },
  "rate_limiting.enabled": {
    "category": "rate_limiting",
    "description": "Enable adaptive rate limiting that learns optimal wait times for each search engine to avoid hitting API rate limits. When disabled, requests are sent with minimal delay (0.1s), which may trigger rate limit errors from some APIs.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Enable Rate Limiting",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "rate_limiting.exploration_rate": {
    "category": "rate_limiting",
    "description": "Fraction of requests that test shorter wait times to check if the API allows faster access (0.0-1.0). Higher values adapt faster to relaxed limits but risk more rate limit errors.",
    "editable": true,
    "max_value": 1.0,
    "min_value": 0.0,
    "name": "Exploration Rate",
    "options": null,
    "step": 0.05,
    "type": "APP",
    "ui_element": "range",
    "value": 0.1,
    "visible": true
  },
  "rate_limiting.learning_rate": {
    "category": "rate_limiting",
    "description": "How much weight to give new timing data vs. existing estimates (0.0-1.0). Higher values react faster to changes in API rate limits but produce less stable wait times.",
    "editable": true,
    "max_value": 1.0,
    "min_value": 0.05,
    "name": "Learning Rate",
    "options": null,
    "step": 0.05,
    "type": "APP",
    "ui_element": "range",
    "value": 0.45,
    "visible": true
  },
  "rate_limiting.llm_enabled": {
    "category": "rate_limiting",
    "description": "Enable adaptive rate limiting for LLM API calls, separate from search engine rate limiting. Useful for free-tier or rate-limited LLM APIs that impose request quotas.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Enable LLM Rate Limiting",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "rate_limiting.memory_window": {
    "category": "rate_limiting",
    "description": "Number of recent requests to remember per search engine for calculating optimal wait times. At least 3 successful requests are needed before wait time estimates start updating.",
    "editable": true,
    "max_value": 1000,
    "min_value": 10,
    "name": "Memory Window",
    "options": null,
    "step": 10,
    "type": "APP",
    "ui_element": "number",
    "value": 100,
    "visible": true
  },
  "rate_limiting.profile": {
    "category": "rate_limiting",
    "description": "Overall rate limiting behavior. 'Conservative' uses longer waits and adapts slowly (fewer errors). 'Balanced' is the default. 'Aggressive' uses shorter waits and adapts quickly (faster but riskier).",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Rate Limiting Profile",
    "options": [
      {
        "label": "Conservative (slower, more reliable)",
        "value": "conservative"
      },
      {
        "label": "Balanced (default)",
        "value": "balanced"
      },
      {
        "label": "Aggressive (faster, higher risk)",
        "value": "aggressive"
      }
    ],
    "step": null,
    "type": "APP",
    "ui_element": "select",
    "value": "balanced",
    "visible": true
  },
  "report.citation_format": {
    "category": "report_parameters",
    "description": "Citation formatting style for reports. Options include numbered hyperlinks [1], domain-based hyperlinks [arxiv.org], smart domain numbering [arxiv.org-1], and plain numbered references without links.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Citation Format",
    "options": [
      {
        "label": "Numbers with hyperlinks [1]",
        "value": "number_hyperlinks"
      },
      {
        "label": "Domain names with hyperlinks [arxiv.org]",
        "value": "domain_hyperlinks"
      },
      {
        "label": "Domain with smart numbering [arxiv.org] or [arxiv.org-1]",
        "value": "domain_id_hyperlinks"
      },
      {
        "label": "Domain with consistent numbering [arxiv.org-1]",
        "value": "domain_id_always_hyperlinks"
      },
      {
        "label": "Numbers without hyperlinks [1]",
        "value": "no_hyperlinks"
      }
    ],
    "step": null,
    "type": "REPORT",
    "ui_element": "select",
    "value": "number_hyperlinks",
    "visible": true
  },
  "report.enable_file_backup": {
    "category": "report_parameters",
    "description": "Also save reports as files on disk for external access (reports are always stored in the database regardless). Enable this if you need to access reports from outside the web interface.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Enable File Backup",
    "options": null,
    "step": null,
    "type": "REPORT",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "report.export_formats": {
    "category": "report_parameters",
    "description": "Available export format options displayed in the user interface. Supported formats include Markdown (.md), LaTeX (.tex), Quarto (.qmd), and RIS bibliographic format.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Export Formats",
    "options": [
      {
        "label": "Markdown (.md)",
        "value": "markdown"
      },
      {
        "label": "LaTeX (.tex)",
        "value": "latex"
      },
      {
        "label": "Quarto (.qmd)",
        "value": "quarto"
      }
    ],
    "step": null,
    "type": "REPORT",
    "ui_element": "multiselect",
    "value": [
      "markdown",
      "latex",
      "quarto",
      "ris"
    ],
    "visible": true
  },
  "report.max_context_chars": {
    "category": "report_parameters",
    "description": "Maximum character limit for previous section context when generating report sections. If accumulated context exceeds this, it is truncated at sentence boundaries. Lower values are safer for smaller local models. Default is 4000.",
    "editable": true,
    "max_value": 50000,
    "min_value": 1000,
    "name": "Max Context Characters",
    "options": null,
    "step": 500,
    "type": "REPORT",
    "ui_element": "number",
    "value": 4000,
    "visible": true
  },
  "report.max_context_sections": {
    "category": "report_parameters",
    "description": "Number of previously generated report sections to include as context when writing new sections. Helps the LLM avoid repeating content. Higher values increase context size but may exceed smaller model limits. Default is 3.",
    "editable": true,
    "max_value": 10,
    "min_value": 1,
    "name": "Max Context Sections",
    "options": null,
    "step": 1,
    "type": "REPORT",
    "ui_element": "number",
    "value": 3,
    "visible": true
  },
  "report.searches_per_section": {
    "category": "report_parameters",
    "description": "Number of web searches to perform per report section. Higher values increase research depth for each section but also increase search engine queries and processing time. Default is 2.",
    "editable": true,
    "max_value": 5.0,
    "min_value": 1.0,
    "name": "Searches Per Section",
    "options": null,
    "step": null,
    "type": "REPORT",
    "ui_element": "number",
    "value": 2,
    "visible": true
  },
  "research_library.auto_index_enabled": {
    "category": "research_library",
    "description": "Automatically index documents for RAG search when they are added to collections (via upload or download). Indexing runs in the background without blocking uploads. Disable to defer indexing and improve upload speed for large batches.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Auto-Index New Documents",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "research_library.confirm_deletions": {
    "category": "research_library",
    "description": "Show confirmation dialogs before delete operations. Recommended to keep enabled to prevent accidental data loss.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Confirm Deletions",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "research_library.max_pdf_size_mb": {
    "category": "research_library",
    "description": "Maximum allowed PDF file size in megabytes. PDFs larger than this will not be stored.",
    "editable": true,
    "max_value": 500,
    "min_value": 1,
    "name": "Maximum PDF Size (MB)",
    "options": null,
    "step": 10,
    "type": "APP",
    "ui_element": "number",
    "value": 100,
    "visible": true
  },
  "research_library.pdf_storage_mode": {
    "category": "research_library",
    "description": "Choose how PDFs are stored. Each user has their own encrypted database. Database mode stores PDFs encrypted within it (secure, portable, isolated per-user). Filesystem mode stores unencrypted files on disk (faster for large files). None stores only extracted text (smallest footprint).",
    "editable": true,
    "env_var": "RESEARCH_LIBRARY_PDF_STORAGE_MODE",
    "max_value": null,
    "min_value": null,
    "name": "PDF Storage Mode",
    "options": [
      {
        "label": "Database (Encrypted, Portable)",
        "value": "database"
      },
      {
        "label": "Filesystem (Unencrypted, Faster)",
        "value": "filesystem"
      },
      {
        "label": "None (Text Only)",
        "value": "none"
      }
    ],
    "step": null,
    "type": "APP",
    "ui_element": "select",
    "value": "database",
    "visible": true
  },
  "research_library.shared_library": {
    "category": "research_library",
    "description": "When enabled, all users share the same library directory. Documents from all users will be visible to each other.",
    "editable": true,
    "env_var": "RESEARCH_LIBRARY_SHARED_LIBRARY",
    "max_value": null,
    "min_value": null,
    "name": "Shared Library Mode",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "research_library.storage_path": {
    "category": "research_library",
    "description": "Base path for storing research library documents. Each user will have their own subdirectory unless shared library is enabled.",
    "editable": true,
    "env_var": "RESEARCH_LIBRARY_STORAGE_PATH",
    "max_value": null,
    "min_value": null,
    "name": "Library Storage Path",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "text",
    "value": "~/Documents/LocalDeepResearch/Library",
    "visible": true
  },
  "research_library.upload_pdf_storage": {
    "category": "research_library",
    "description": "Choose how user-uploaded PDFs are stored. Database mode stores PDFs encrypted in your personal database (increases database size but allows viewing/downloading later). Text Only extracts and stores only the text content (smallest footprint). Note: Filesystem storage is not available for uploads for security reasons.",
    "editable": true,
    "env_var": "RESEARCH_LIBRARY_UPLOAD_PDF_STORAGE",
    "max_value": null,
    "min_value": null,
    "name": "Upload PDF Storage",
    "options": [
      {
        "label": "Text Only (Default)",
        "value": "none"
      },
      {
        "label": "Database (Encrypted)",
        "value": "database"
      }
    ],
    "step": null,
    "type": "APP",
    "ui_element": "select",
    "value": "none",
    "visible": true
  },
  "search.cross_engine_max_context_items": {
    "category": "search_parameters",
    "description": "Maximum number of search result previews sent to the LLM for relevance ranking during cross-engine filtering. Higher values let the model evaluate more candidates, improving recall at the cost of increased prompt size and latency.",
    "editable": true,
    "max_value": 200,
    "min_value": 10,
    "name": "Cross-Engine Max Context Items",
    "options": null,
    "step": 5,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 30,
    "visible": true
  },
  "search.cross_engine_max_results": {
    "category": "search_parameters",
    "description": "Maximum number of search results to keep after cross-engine filtering. When results from multiple search engines are combined, this limits how many total results are displayed. Higher values show more comprehensive results.",
    "editable": true,
    "max_value": 1000,
    "min_value": 1,
    "name": "Cross-Engine Max Results",
    "options": null,
    "step": 1,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 100,
    "visible": true
  },
  "search.engine.DEFAULT_SEARCH_ENGINE": {
    "category": "local_all",
    "description": "Fallback search engine used when the configured engine is unavailable or has errors.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Default Search Engine",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "wikipedia",
    "visible": true
  },
  "search.engine.auto.default_params.max_engines_to_try": {
    "category": "auto",
    "description": "Maximum number of search engines to try before returning results. Auto mode selects the best engine(s) based on your query type.",
    "editable": true,
    "max_value": null,
    "min_value": 1,
    "name": "Max Engines To Try",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 3,
    "visible": true
  },
  "search.engine.auto.default_params.use_api_key_services": {
    "category": "auto",
    "description": "Whether to include paid API services (Brave, SerpAPI, etc.) in auto-selection. Disable to only use free search engines.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Use Api Key Services",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.auto.description": {
    "category": "auto",
    "description": "Human-readable description of the search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Description",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Attempt to choose the best combination of search engines automatically.",
    "visible": false
  },
  "search.engine.auto.display_name": {
    "category": "auto",
    "description": "Display name to use in the U.I. for this search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Display Name",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Auto",
    "visible": false
  },
  "search.engine.auto.reliability": {
    "category": "auto",
    "description": "Reliability rating for auto mode. Varies based on which underlying engine is selected.",
    "editable": true,
    "max_value": 1.0,
    "min_value": 0.0,
    "name": "Reliability",
    "options": null,
    "step": 0.05,
    "type": "SEARCH",
    "ui_element": "range",
    "value": 0.85,
    "visible": true
  },
  "search.engine.auto.requires_api_key": {
    "category": "auto",
    "description": "Whether auto mode requires API keys. False because it can fall back to free engines like Wikipedia.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Requires Api Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.auto.requires_llm": {
    "category": "auto",
    "description": "Whether auto mode uses LLM to select the best engine. When disabled, falls back to rule-based selection.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Requires Llm",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.auto.strengths": {
    "category": "auto",
    "description": "Key advantages of auto mode: Intelligently selects the best engine for each query type, tries multiple sources if needed.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Strengths",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "intelligent engine selection",
      "adaptable to query type",
      "fallback capabilities"
    ],
    "visible": true
  },
  "search.engine.auto.weaknesses": {
    "category": "auto",
    "description": "Limitations of auto mode: May use more API calls trying multiple engines, selection heuristics may not always be optimal.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Weaknesses",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "slightly slower due to LLM analysis"
    ],
    "visible": true
  },
  "search.engine.web.arxiv.default_params.max_results": {
    "category": "arxiv",
    "description": "Maximum number of papers to retrieve from arXiv per search query.",
    "editable": true,
    "max_value": null,
    "min_value": 1,
    "name": "Max Results",
    "options": null,
    "step": 1,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 20,
    "visible": true
  },
  "search.engine.web.arxiv.default_params.sort_by": {
    "category": "arxiv",
    "description": "How to sort arXiv results: 'relevance' for best match, 'lastUpdatedDate' for recently updated, 'submittedDate' for newest submissions.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Sort By",
    "options": [
      {
        "label": "Relevance",
        "value": "relevance"
      },
      {
        "label": "Last Updated Date",
        "value": "lastUpdatedDate"
      },
      {
        "label": "Submitted Date",
        "value": "submittedDate"
      }
    ],
    "step": null,
    "type": "SEARCH",
    "ui_element": "select",
    "value": "relevance",
    "visible": true
  },
  "search.engine.web.arxiv.default_params.sort_order": {
    "category": "arxiv",
    "description": "Sort order for arXiv results: 'descending' (newest/most relevant first) or 'ascending' (oldest/least relevant first).",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Sort Order",
    "options": [
      {
        "label": "Ascending",
        "value": "ascending"
      },
      {
        "label": "Descending",
        "value": "descending"
      }
    ],
    "step": null,
    "type": "SEARCH",
    "ui_element": "select",
    "value": "descending",
    "visible": true
  },
  "search.engine.web.arxiv.description": {
    "category": "arxiv",
    "description": "Human-readable description of the search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Description",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Search papers uploaded to ArXiv.",
    "visible": false
  },
  "search.engine.web.arxiv.display_name": {
    "category": "arxiv",
    "description": "Display name to use in the U.I. for this search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Display Name",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "ArXiv",
    "visible": false
  },
  "search.engine.web.arxiv.journal_reputation.enabled": {
    "category": "arxiv",
    "description": "Enable journal quality filtering for this search engine.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Filter Low-Quality Journals",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.arxiv.reliability": {
    "category": "arxiv",
    "description": "Reliability rating (0-1) for arXiv as a source. Higher values indicate more trustworthy academic content.",
    "editable": true,
    "max_value": 1.0,
    "min_value": 0.0,
    "name": "Reliability",
    "options": null,
    "step": 0.05,
    "type": "SEARCH",
    "ui_element": "range",
    "value": 0.9,
    "visible": true
  },
  "search.engine.web.arxiv.requires_api_key": {
    "category": "arxiv",
    "description": "Whether arXiv requires an API key. arXiv is free and open access, so this is false.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Requires Api Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.arxiv.strengths": {
    "category": "arxiv",
    "description": "Key advantages of arXiv: Free access to preprints, covers physics/math/CS/biology, fast publication of cutting-edge research.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Strengths",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "scientific papers",
      "academic research",
      "physics",
      "computer science",
      "mathematics",
      "statistics",
      "machine learning",
      "preprints"
    ],
    "visible": true
  },
  "search.engine.web.arxiv.use_in_auto_search": {
    "category": "arxiv",
    "description": "Include ArXiv in auto search mode",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include in Auto Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.arxiv.weaknesses": {
    "category": "arxiv",
    "description": "Limitations of arXiv: Preprints aren't peer-reviewed, limited to STEM fields, keyword-based search may miss semantic matches.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Weaknesses",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "non-academic topics",
      "consumer products",
      "news",
      "general information"
    ],
    "visible": true
  },
  "search.engine.web.brave.api_key": {
    "category": "brave",
    "description": "The Brave API key to use.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Api Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "password",
    "value": "",
    "visible": true
  },
  "search.engine.web.brave.default_params.region": {
    "category": "brave",
    "description": "Geographic region code for Brave search results (e.g., 'US', 'UK', 'DE').",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Region",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "US",
    "visible": true
  },
  "search.engine.web.brave.default_params.safe_search": {
    "category": "brave",
    "description": "Enable safe search filtering for Brave to exclude adult content.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Safe Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.brave.default_params.search_language": {
    "category": "brave",
    "description": "Preferred language for Brave search results.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Search Language",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "English",
    "visible": true
  },
  "search.engine.web.brave.default_params.time_period": {
    "category": "brave",
    "description": "Time range filter for Brave results (e.g., 'd' for day, 'w' for week, 'm' for month, 'y' for year).",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Time Period",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "y",
    "visible": true
  },
  "search.engine.web.brave.description": {
    "category": "brave",
    "description": "Human-readable description of the search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Description",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Search the web using the Brave search engine.",
    "visible": false
  },
  "search.engine.web.brave.display_name": {
    "category": "brave",
    "description": "Display name to use in the U.I. for this search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Display Name",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Brave",
    "visible": false
  },
  "search.engine.web.brave.reliability": {
    "category": "brave",
    "description": "Reliability rating (0-1) for Brave Search. Good general-purpose search with privacy focus.",
    "editable": true,
    "max_value": 1.0,
    "min_value": 0.0,
    "name": "Reliability",
    "options": null,
    "step": 0.05,
    "type": "SEARCH",
    "ui_element": "range",
    "value": 0.7,
    "visible": true
  },
  "search.engine.web.brave.requires_api_key": {
    "category": "brave",
    "description": "Whether Brave Search requires an API key. Yes - get one at brave.com/search/api.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Requires Api Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.brave.strengths": {
    "category": "brave",
    "description": "Key advantages of Brave: Privacy-focused, good semantic search, reasonable pricing, full-text retrieval available.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Strengths",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "privacy-focused web search",
      "product information",
      "reviews",
      "recent content",
      "news",
      "broad coverage"
    ],
    "visible": true
  },
  "search.engine.web.brave.supports_full_search": {
    "category": "brave",
    "description": "Whether Brave supports fetching full webpage content beyond snippets.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Supports Full Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.brave.use_in_auto_search": {
    "category": "brave",
    "description": "Include Brave search in auto search mode",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include in Auto Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.brave.weaknesses": {
    "category": "brave",
    "description": "Limitations of Brave: Smaller index than Google, requires paid API for production use.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Weaknesses",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "requires API key with usage limits",
      "smaller index than Google"
    ],
    "visible": true
  },
  "search.engine.web.elasticsearch.default_params.api_key": {
    "category": "elasticsearch",
    "description": "API key for Elasticsearch authentication (optional)",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "API Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "password",
    "value": "",
    "visible": true
  },
  "search.engine.web.elasticsearch.default_params.cloud_id": {
    "category": "elasticsearch",
    "description": "Elastic Cloud ID for cloud-hosted Elasticsearch (optional)",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Cloud ID",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "",
    "visible": true
  },
  "search.engine.web.elasticsearch.default_params.highlight_fields": {
    "category": "elasticsearch",
    "description": "Fields to highlight in search results (JSON array)",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Highlight Fields",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "content",
      "title"
    ],
    "visible": true
  },
  "search.engine.web.elasticsearch.default_params.hosts": {
    "category": "elasticsearch",
    "description": "Elasticsearch server URLs (JSON array format)",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Elasticsearch Host URLs",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "http://localhost:9200"
    ],
    "visible": true
  },
  "search.engine.web.elasticsearch.default_params.index_name": {
    "category": "elasticsearch",
    "description": "Name of the Elasticsearch index to search",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Index Name",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "documents",
    "visible": true
  },
  "search.engine.web.elasticsearch.default_params.max_results": {
    "category": "elasticsearch",
    "description": "Maximum number of search results to return",
    "editable": true,
    "max_value": 100,
    "min_value": 1,
    "name": "Max Results",
    "options": null,
    "step": 1,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 10,
    "visible": true
  },
  "search.engine.web.elasticsearch.default_params.password": {
    "category": "elasticsearch",
    "description": "Password for Elasticsearch authentication (optional)",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Password",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "password",
    "value": "",
    "visible": true
  },
  "search.engine.web.elasticsearch.default_params.search_fields": {
    "category": "elasticsearch",
    "description": "Fields to search in (JSON array)",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Search Fields",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "content",
      "title",
      "description",
      "text"
    ],
    "visible": true
  },
  "search.engine.web.elasticsearch.default_params.username": {
    "category": "elasticsearch",
    "description": "Username for Elasticsearch authentication (optional)",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Username",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "",
    "visible": true
  },
  "search.engine.web.elasticsearch.description": {
    "category": "elasticsearch",
    "description": "Human-readable description of the search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Description",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Search engine for Elasticsearch databases. Efficient for searching document collections and structured data.",
    "visible": true
  },
  "search.engine.web.elasticsearch.display_name": {
    "category": "elasticsearch",
    "description": "Display name to use in the U.I. for this search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Display Name",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Elasticsearch",
    "visible": true
  },
  "search.engine.web.elasticsearch.reliability": {
    "category": "elasticsearch",
    "description": "Reliability of the Elasticsearch search engine",
    "editable": true,
    "max_value": 1.0,
    "min_value": 0.0,
    "name": "Reliability",
    "options": null,
    "step": 0.05,
    "type": "SEARCH",
    "ui_element": "range",
    "value": 0.95,
    "visible": true
  },
  "search.engine.web.elasticsearch.requires_api_key": {
    "category": "elasticsearch",
    "description": "Whether this search engine requires an API key",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Requires Api Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.elasticsearch.requires_llm": {
    "category": "elasticsearch",
    "description": "Whether this search engine requires an LLM for relevance filtering",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Requires LLM",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.elasticsearch.strengths": {
    "category": "elasticsearch",
    "description": "Strengths of this search engine",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Strengths",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "Fast full-text search",
      "Scalable and distributed",
      "Rich query DSL",
      "Supports aggregations",
      "Real-time search"
    ],
    "visible": true
  },
  "search.engine.web.elasticsearch.supports_full_search": {
    "category": "elasticsearch",
    "description": "Whether this search engine supports full document search",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Supports Full Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.elasticsearch.use_in_auto_search": {
    "category": "elasticsearch",
    "description": "Include Elasticsearch in auto search mode",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include in Auto Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.elasticsearch.weaknesses": {
    "category": "elasticsearch",
    "description": "Weaknesses of this search engine",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Weaknesses",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "Requires running Elasticsearch instance",
      "Needs proper index configuration",
      "Data must be pre-indexed"
    ],
    "visible": true
  },
  "search.engine.web.exa.api_key": {
    "category": "exa",
    "description": "The Exa API key to use. Get one at exa.ai.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Api Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "password",
    "value": "",
    "visible": true
  },
  "search.engine.web.exa.default_params.include_full_content": {
    "category": "exa",
    "description": "Include full webpage content in results",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include Full Content",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.exa.default_params.search_type": {
    "category": "exa",
    "description": "Search type - auto (default), neural (semantic), fast, or deep (comprehensive multi-query)",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Search Type",
    "options": [
      "auto",
      "neural",
      "fast",
      "deep"
    ],
    "step": null,
    "type": "SEARCH",
    "ui_element": "select",
    "value": "auto",
    "visible": true
  },
  "search.engine.web.exa.description": {
    "category": "exa",
    "description": "Human-readable description of the search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Description",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Neural search engine built for AI with semantic understanding and high-quality results optimized for LLM consumption.",
    "visible": false
  },
  "search.engine.web.exa.display_name": {
    "category": "exa",
    "description": "Display name to use in the U.I. for this search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Display Name",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Exa",
    "visible": false
  },
  "search.engine.web.exa.reliability": {
    "category": "exa",
    "description": "Reliability score (0-1). Exa rated high (0.85) - neural search with semantic understanding designed for AI applications.",
    "editable": true,
    "max_value": 1.0,
    "min_value": 0.0,
    "name": "Reliability",
    "options": null,
    "step": 0.05,
    "type": "SEARCH",
    "ui_element": "range",
    "value": 0.85,
    "visible": true
  },
  "search.engine.web.exa.requires_api_key": {
    "category": "exa",
    "description": "Indicates this engine requires an Exa API key. Get one at exa.ai.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Requires Api Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.exa.strengths": {
    "category": "exa",
    "description": "Advantages: Neural search with semantic understanding, results optimized for LLM consumption, high-quality content, supports deep search mode.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Strengths",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "neural search with semantic understanding",
      "results optimized for LLM consumption",
      "high-quality, clean content",
      "supports deep search for comprehensive results",
      "built-in highlights and summaries",
      "date filtering and domain controls"
    ],
    "visible": true
  },
  "search.engine.web.exa.supports_full_search": {
    "category": "exa",
    "description": "Indicates this engine can fetch full page content after initial search, not just snippets.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Supports Full Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.exa.use_in_auto_search": {
    "category": "exa",
    "description": "Include Exa in auto search mode",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include in Auto Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.exa.weaknesses": {
    "category": "exa",
    "description": "Limitations: Requires paid API key with usage limits, newer service with evolving features.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Weaknesses",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "requires API key with usage limits",
      "newer service still evolving",
      "costs scale with usage"
    ],
    "visible": true
  },
  "search.engine.web.github.api_key": {
    "category": "github",
    "description": "GitHub Personal Access Token for API authentication. Without this, you're limited to 10 requests/minute for search API. With authentication, you get 30 requests/minute for search API.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "GitHub API Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "password",
    "value": "",
    "visible": true
  },
  "search.engine.web.github.default_params.include_issues": {
    "category": "github",
    "description": "Include recent GitHub issues in repository search results.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include Issues",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.github.default_params.include_readme": {
    "category": "github",
    "description": "Fetch and include README content when searching repositories.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include Readme",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.github.default_params.max_results": {
    "category": "github",
    "description": "Maximum number of GitHub results to retrieve per search.",
    "editable": true,
    "max_value": null,
    "min_value": 1,
    "name": "Max Results",
    "options": null,
    "step": 1,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 15,
    "visible": true
  },
  "search.engine.web.github.default_params.search_type": {
    "category": "github",
    "description": "What to search on GitHub: 'repositories', 'code', 'issues', or 'users'.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Search Type",
    "options": [
      {
        "label": "Repositories",
        "value": "repositories"
      },
      {
        "label": "Code",
        "value": "code"
      },
      {
        "label": "Issues",
        "value": "issues"
      },
      {
        "label": "Users",
        "value": "users"
      }
    ],
    "step": null,
    "type": "SEARCH",
    "ui_element": "select",
    "value": "repositories",
    "visible": true
  },
  "search.engine.web.github.description": {
    "category": "github",
    "description": "Human-readable description of the search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Description",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Search projects on Github.",
    "visible": false
  },
  "search.engine.web.github.display_name": {
    "category": "github",
    "description": "Display name to use in the U.I. for this search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Display Name",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Github",
    "visible": false
  },
  "search.engine.web.github.reliability": {
    "category": "github",
    "description": "Reliability rating (0-1) for GitHub as a source. Great for code and technical projects.",
    "editable": true,
    "max_value": 1.0,
    "min_value": 0.0,
    "name": "Reliability",
    "options": null,
    "step": 0.05,
    "type": "SEARCH",
    "ui_element": "range",
    "value": 0.99,
    "visible": true
  },
  "search.engine.web.github.requires_api_key": {
    "category": "github",
    "description": "Whether GitHub requires a personal access token. Optional but recommended for higher rate limits (10→30 req/min).",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Requires Api Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.github.strengths": {
    "category": "github",
    "description": "Key advantages of GitHub: Excellent for code/technical queries, includes README content, issue discussions, works without API key.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Strengths",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "code repositories",
      "software documentation",
      "open source projects",
      "programming issues",
      "developer information",
      "technical documentation"
    ],
    "visible": true
  },
  "search.engine.web.github.supports_full_search": {
    "category": "github",
    "description": "Whether GitHub supports fetching full content (README, code files) beyond basic search results.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Supports Full Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.github.use_in_auto_search": {
    "category": "github",
    "description": "Include GitHub in auto search mode",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include in Auto Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.github.weaknesses": {
    "category": "github",
    "description": "Limitations of GitHub: Limited to code/technical content, strict rate limits without authentication.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Weaknesses",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "non-technical content",
      "content outside GitHub",
      "rate limits without API key"
    ],
    "visible": true
  },
  "search.engine.web.google_pse.api_key": {
    "category": "google_pse",
    "description": "The Google PSE API key to use.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Api Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "password",
    "value": "",
    "visible": true
  },
  "search.engine.web.google_pse.default_params.region": {
    "category": "google_pse",
    "description": "Geographic region for search results (e.g., 'us', 'uk', 'de'). Results prioritized from this region.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Region",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "us",
    "visible": true
  },
  "search.engine.web.google_pse.default_params.safe_search": {
    "category": "google_pse",
    "description": "Enable Google SafeSearch to filter explicit content from results.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Safe Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.google_pse.default_params.search_language": {
    "category": "google_pse",
    "description": "Language for search queries and results (e.g., 'English', 'German'). Filters results by language.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Search Language",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "English",
    "visible": true
  },
  "search.engine.web.google_pse.description": {
    "category": "google_pse",
    "description": "Human-readable description of the search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Description",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Search the web using Google's Programmable Search Engine API.",
    "visible": false
  },
  "search.engine.web.google_pse.display_name": {
    "category": "google_pse",
    "description": "Display name to use in the U.I. for this search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Display Name",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Google PSE",
    "visible": false
  },
  "search.engine.web.google_pse.reliability": {
    "category": "google_pse",
    "description": "Reliability score (0-1) indicating result quality. Google PSE is highly reliable (0.9) due to Google's indexing quality.",
    "editable": true,
    "max_value": 1.0,
    "min_value": 0.0,
    "name": "Reliability",
    "options": null,
    "step": 0.05,
    "type": "SEARCH",
    "ui_element": "range",
    "value": 0.9,
    "visible": true
  },
  "search.engine.web.google_pse.requires_api_key": {
    "category": "google_pse",
    "description": "Indicates this engine requires a Google API key and Custom Search Engine ID. Get credentials from Google Cloud Console.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Requires Api Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.google_pse.strengths": {
    "category": "google_pse",
    "description": "Advantages of Google PSE: Custom search scope, high-quality results, domain-specific filtering, configurable search experience.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Strengths",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "custom search scope",
      "high-quality results",
      "domain-specific search",
      "configurable search experience",
      "control over search index"
    ],
    "visible": true
  },
  "search.engine.web.google_pse.supports_full_search": {
    "category": "google_pse",
    "description": "Indicates this engine can fetch full page content after initial search, not just snippets.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Supports Full Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.google_pse.use_in_auto_search": {
    "category": "google_pse",
    "description": "Include Google PSE in auto search mode",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include in Auto Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.google_pse.weaknesses": {
    "category": "google_pse",
    "description": "Limitations: Requires API key, limited to 10,000 queries/day on free tier, requires search engine configuration in Google Control Panel.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Weaknesses",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "requires API key with usage limits",
      "limited to 10,000 queries/day on free tier",
      "requires search engine configuration in Google Control Panel"
    ],
    "visible": true
  },
  "search.engine.web.gutenberg": {
    "category": "gutenberg",
    "description": "Project Gutenberg search engine configuration",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Project Gutenberg Search Engine",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": {
      "description": "Search 70,000+ free public domain books with full text via Gutendex.",
      "reliability": 0.95,
      "requires_api_key": false,
      "requires_llm": true
    },
    "visible": false
  },
  "search.engine.web.gutenberg.default_params.max_results": {
    "category": "gutenberg",
    "description": "Maximum number of results to retrieve from Project Gutenberg.",
    "editable": true,
    "max_value": 32,
    "min_value": 1,
    "name": "Max Results",
    "type": "SEARCH",
    "ui_element": "number",
    "value": 20,
    "visible": true
  },
  "search.engine.web.gutenberg.description": {
    "category": "gutenberg",
    "description": "Human-readable description of the search engine.",
    "editable": false,
    "name": "Description",
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Search 70,000+ free public domain books with full text via Gutendex.",
    "visible": false
  },
  "search.engine.web.gutenberg.display_name": {
    "category": "gutenberg",
    "description": "Display name for Project Gutenberg search engine.",
    "editable": false,
    "name": "Display Name",
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Project Gutenberg",
    "visible": false
  },
  "search.engine.web.gutenberg.reliability": {
    "category": "gutenberg",
    "description": "Reliability score for Project Gutenberg.",
    "editable": true,
    "max_value": 1.0,
    "min_value": 0.0,
    "name": "Reliability",
    "step": 0.05,
    "type": "SEARCH",
    "ui_element": "range",
    "value": 0.95,
    "visible": true
  },
  "search.engine.web.gutenberg.requires_api_key": {
    "category": "gutenberg",
    "description": "Project Gutenberg is free and does not require an API key.",
    "editable": false,
    "name": "Requires API Key",
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": false
  },
  "search.engine.web.gutenberg.strengths": {
    "category": "gutenberg",
    "description": "Key strengths of Project Gutenberg.",
    "editable": true,
    "name": "Strengths",
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "public domain",
      "full text",
      "classic literature",
      "free ebooks",
      "multiple formats"
    ],
    "visible": true
  },
  "search.engine.web.gutenberg.weaknesses": {
    "category": "gutenberg",
    "description": "Limitations of Project Gutenberg.",
    "editable": true,
    "name": "Weaknesses",
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "public domain only",
      "older works",
      "limited modern titles"
    ],
    "visible": true
  },
  "search.engine.web.mojeek.api_key": {
    "category": "mojeek",
    "description": "The Mojeek API key to use. Get one at mojeek.com/services/api.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Api Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "password",
    "value": "",
    "visible": true
  },
  "search.engine.web.mojeek.default_params.language": {
    "category": "mojeek",
    "description": "Language code in ISO 639-1 format for Mojeek language boost (e.g., 'en', 'fr').",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Language",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "en",
    "visible": true
  },
  "search.engine.web.mojeek.default_params.region": {
    "category": "mojeek",
    "description": "Country code in ISO 3166-1 alpha-2 format for Mojeek region boost (e.g., 'GB', 'US').",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Region",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "",
    "visible": true
  },
  "search.engine.web.mojeek.default_params.safe_search": {
    "category": "mojeek",
    "description": "Enable safe search filtering for Mojeek to exclude adult content.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Safe Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.mojeek.description": {
    "category": "mojeek",
    "description": "Human-readable description of the search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Description",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Privacy-focused search engine with its own independent web index.",
    "visible": false
  },
  "search.engine.web.mojeek.display_name": {
    "category": "mojeek",
    "description": "Display name to use in the U.I. for this search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Display Name",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Mojeek",
    "visible": false
  },
  "search.engine.web.mojeek.reliability": {
    "category": "mojeek",
    "description": "Reliability rating (0-1) for Mojeek. Independent index, smaller than Google/Bing.",
    "editable": true,
    "max_value": 1.0,
    "min_value": 0.0,
    "name": "Reliability",
    "options": null,
    "step": 0.05,
    "type": "SEARCH",
    "ui_element": "range",
    "value": 0.65,
    "visible": true
  },
  "search.engine.web.mojeek.requires_api_key": {
    "category": "mojeek",
    "description": "Whether Mojeek requires an API key. Yes - get one at mojeek.com/services/api.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Requires Api Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.mojeek.strengths": {
    "category": "mojeek",
    "description": "Key advantages of Mojeek: Privacy-focused with own independent web index, no tracking.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Strengths",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "privacy-focused with own index",
      "no tracking or profiling",
      "independent results",
      "European-based"
    ],
    "visible": true
  },
  "search.engine.web.mojeek.supports_full_search": {
    "category": "mojeek",
    "description": "Whether Mojeek supports fetching full webpage content beyond snippets.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Supports Full Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.mojeek.use_in_auto_search": {
    "category": "mojeek",
    "description": "Include Mojeek in auto search mode",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include in Auto Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.mojeek.weaknesses": {
    "category": "mojeek",
    "description": "Limitations of Mojeek: Smaller index than Google/Bing, requires paid API key.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Weaknesses",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "smaller index than Google/Bing",
      "requires paid API key"
    ],
    "visible": true
  },
  "search.engine.web.nasa_ads": {
    "category": "nasa_ads",
    "description": "NASA Astrophysics Data System search engine configuration",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "NASA ADS Search Engine",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": {
      "description": "Search millions of astronomy and physics papers with natural language queries",
      "reliability": 0.95,
      "requires_api_key": true,
      "requires_llm": true
    },
    "visible": false
  },
  "search.engine.web.nasa_ads.api_key": {
    "category": "nasa_ads",
    "description": "NASA ADS API key (required). Get one at https://ui.adsabs.harvard.edu/user/settings/token",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "API Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "password",
    "value": "",
    "visible": true
  },
  "search.engine.web.nasa_ads.default_params.from_publication_date": {
    "category": "nasa_ads",
    "description": "Only return papers published after this date (YYYY-MM-DD format, leave empty for all dates)",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "From Publication Date",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "",
    "visible": true
  },
  "search.engine.web.nasa_ads.default_params.include_arxiv": {
    "category": "nasa_ads",
    "description": "Include ArXiv preprints in search results",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include ArXiv",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.nasa_ads.default_params.max_results": {
    "category": "nasa_ads",
    "description": "Maximum number of results to retrieve from NASA ADS",
    "editable": true,
    "max_value": 200,
    "min_value": 1,
    "name": "Max Results",
    "options": null,
    "step": 1,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 25,
    "visible": true
  },
  "search.engine.web.nasa_ads.default_params.min_citations": {
    "category": "nasa_ads",
    "description": "Minimum number of citations required (0 for no filter)",
    "editable": true,
    "max_value": 1000,
    "min_value": 0,
    "name": "Minimum Citations",
    "options": null,
    "step": 1,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 0,
    "visible": true
  },
  "search.engine.web.nasa_ads.default_params.sort_by": {
    "category": "nasa_ads",
    "description": "How to sort the search results",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Sort By",
    "options": [
      {
        "label": "Relevance",
        "value": "relevance"
      },
      {
        "label": "Citation Count",
        "value": "citation_count"
      },
      {
        "label": "Publication Date",
        "value": "date"
      }
    ],
    "step": null,
    "type": "SEARCH",
    "ui_element": "select",
    "value": "relevance",
    "visible": true
  },
  "search.engine.web.nasa_ads.description": {
    "category": "nasa_ads",
    "description": "Human-readable description of the search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Description",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "NASA Astrophysics Data System - comprehensive database of astronomy, astrophysics, physics, and geophysics papers. Includes both ArXiv preprints and published papers.",
    "visible": false
  },
  "search.engine.web.nasa_ads.display_name": {
    "category": "nasa_ads",
    "description": "Display name to use in the U.I. for this search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Display Name",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "NASA ADS",
    "visible": false
  },
  "search.engine.web.nasa_ads.journal_reputation.enabled": {
    "category": "nasa_ads",
    "description": "Enable journal quality filtering for this search engine.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Filter Low-Quality Journals",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.nasa_ads.reliability": {
    "category": "nasa_ads",
    "description": "Reliability score for NASA ADS search results (0.0-1.0, higher is better)",
    "editable": true,
    "max_value": 1.0,
    "min_value": 0.0,
    "name": "Reliability",
    "options": null,
    "step": 0.05,
    "type": "SEARCH",
    "ui_element": "range",
    "value": 0.95,
    "visible": true
  },
  "search.engine.web.nasa_ads.requires_api_key": {
    "category": "nasa_ads",
    "description": "Whether NASA ADS requires an API key (always true for NASA ADS)",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Requires Api Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.nasa_ads.strengths": {
    "category": "nasa_ads",
    "description": "List of research areas where NASA ADS excels",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Strengths",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "astronomy papers",
      "astrophysics research",
      "physics papers",
      "space science",
      "planetary science",
      "cosmology",
      "high energy physics",
      "historical papers",
      "citation tracking",
      "natural language queries"
    ],
    "visible": true
  },
  "search.engine.web.nasa_ads.weaknesses": {
    "category": "nasa_ads",
    "description": "List of research areas where NASA ADS has limited coverage",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Weaknesses",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "biomedical content",
      "computer science papers",
      "social sciences",
      "humanities",
      "requires API key for good performance"
    ],
    "visible": true
  },
  "search.engine.web.openalex": {
    "category": "openalex",
    "description": "OpenAlex academic search engine configuration",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "OpenAlex Search Engine",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": {
      "description": "Search 250+ million academic papers with natural language queries",
      "reliability": 0.95,
      "requires_api_key": false,
      "requires_llm": true
    },
    "visible": false
  },
  "search.engine.web.openalex.default_params.filter_open_access": {
    "category": "openalex",
    "description": "Only return open access papers that are freely available",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Open Access Only",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.openalex.default_params.from_publication_date": {
    "category": "openalex",
    "description": "Only return papers published after this date (YYYY-MM-DD format, leave empty for all dates)",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "From Publication Date",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "",
    "visible": true
  },
  "search.engine.web.openalex.default_params.max_results": {
    "category": "openalex",
    "description": "Maximum number of results to retrieve from OpenAlex",
    "editable": true,
    "max_value": 200,
    "min_value": 1,
    "name": "Max Results",
    "options": null,
    "step": 1,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 25,
    "visible": true
  },
  "search.engine.web.openalex.default_params.min_citations": {
    "category": "openalex",
    "description": "Minimum number of citations required (0 for no filter)",
    "editable": true,
    "max_value": 1000,
    "min_value": 0,
    "name": "Minimum Citations",
    "options": null,
    "step": 1,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 0,
    "visible": true
  },
  "search.engine.web.openalex.default_params.sort_by": {
    "category": "openalex",
    "description": "How to sort the search results",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Sort By",
    "options": [
      {
        "label": "Relevance",
        "value": "relevance"
      },
      {
        "label": "Citation Count",
        "value": "cited_by_count"
      },
      {
        "label": "Publication Date",
        "value": "publication_date"
      }
    ],
    "step": null,
    "type": "SEARCH",
    "ui_element": "select",
    "value": "relevance",
    "visible": true
  },
  "search.engine.web.openalex.description": {
    "category": "openalex",
    "description": "Human-readable description of the search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Description",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Search 250+ million academic papers with natural language queries. Comprehensive scholarly database covering all disciplines.",
    "visible": false
  },
  "search.engine.web.openalex.display_name": {
    "category": "openalex",
    "description": "Display name to use in the U.I. for this search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Display Name",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "OpenAlex",
    "visible": false
  },
  "search.engine.web.openalex.email": {
    "category": "openalex",
    "description": "Email address for polite pool access (optional but recommended). Provides faster response times.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Email (for Polite Pool)",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "",
    "visible": true
  },
  "search.engine.web.openalex.journal_reputation.enabled": {
    "category": "openalex",
    "description": "Enable journal quality filtering for this search engine.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Filter Low-Quality Journals",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.openalex.reliability": {
    "category": "openalex",
    "description": "Reliability score for OpenAlex search results (0.0-1.0, higher is better)",
    "editable": true,
    "max_value": 1.0,
    "min_value": 0.0,
    "name": "Reliability",
    "options": null,
    "step": 0.05,
    "type": "SEARCH",
    "ui_element": "range",
    "value": 0.95,
    "visible": true
  },
  "search.engine.web.openalex.requires_api_key": {
    "category": "openalex",
    "description": "Whether OpenAlex requires an API key (always false for OpenAlex)",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Requires Api Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.openalex.strengths": {
    "category": "openalex",
    "description": "List of research areas where OpenAlex excels",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Strengths",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "academic papers",
      "scholarly research",
      "natural language queries",
      "all disciplines",
      "citation analysis",
      "open access content",
      "comprehensive coverage",
      "no API key required",
      "high rate limits"
    ],
    "visible": true
  },
  "search.engine.web.openalex.use_in_auto_search": {
    "category": "openalex",
    "description": "Include OpenAlex in auto search mode",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include in Auto Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.openalex.weaknesses": {
    "category": "openalex",
    "description": "List of content types where OpenAlex has limited coverage",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Weaknesses",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "non-academic content",
      "news articles",
      "general web content",
      "real-time information"
    ],
    "visible": true
  },
  "search.engine.web.openlibrary": {
    "category": "openlibrary",
    "description": "Open Library search engine configuration",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Open Library Search Engine",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": {
      "description": "Search 2M+ books with metadata, covers, and full text from Internet Archive.",
      "reliability": 0.9,
      "requires_api_key": false,
      "requires_llm": true
    },
    "visible": false
  },
  "search.engine.web.openlibrary.default_params.max_results": {
    "category": "openlibrary",
    "description": "Maximum number of results to retrieve from Open Library.",
    "editable": true,
    "max_value": 100,
    "min_value": 1,
    "name": "Max Results",
    "type": "SEARCH",
    "ui_element": "number",
    "value": 20,
    "visible": true
  },
  "search.engine.web.openlibrary.description": {
    "category": "openlibrary",
    "description": "Human-readable description of the search engine.",
    "editable": false,
    "name": "Description",
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Search 2M+ books with metadata, covers, and full text from Internet Archive.",
    "visible": false
  },
  "search.engine.web.openlibrary.display_name": {
    "category": "openlibrary",
    "description": "Display name for Open Library search engine.",
    "editable": false,
    "name": "Display Name",
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Open Library",
    "visible": false
  },
  "search.engine.web.openlibrary.reliability": {
    "category": "openlibrary",
    "description": "Reliability score for Open Library.",
    "editable": true,
    "max_value": 1.0,
    "min_value": 0.0,
    "name": "Reliability",
    "step": 0.05,
    "type": "SEARCH",
    "ui_element": "range",
    "value": 0.9,
    "visible": true
  },
  "search.engine.web.openlibrary.requires_api_key": {
    "category": "openlibrary",
    "description": "Open Library is free and does not require an API key.",
    "editable": false,
    "name": "Requires API Key",
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": false
  },
  "search.engine.web.openlibrary.strengths": {
    "category": "openlibrary",
    "description": "Key strengths of Open Library.",
    "editable": true,
    "name": "Strengths",
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "books",
      "literature",
      "metadata",
      "covers",
      "full text",
      "Internet Archive"
    ],
    "visible": true
  },
  "search.engine.web.openlibrary.weaknesses": {
    "category": "openlibrary",
    "description": "Limitations of Open Library.",
    "editable": true,
    "name": "Weaknesses",
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "books only",
      "variable metadata quality",
      "English focus"
    ],
    "visible": true
  },
  "search.engine.web.paperless.api_key": {
    "category": "paperless",
    "description": "API key for authentication (get from Paperless admin panel)",
    "editable": true,
    "env_var": "PAPERLESS_API_TOKEN",
    "max_value": null,
    "min_value": null,
    "name": "API Token",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "password",
    "value": "",
    "visible": true
  },
  "search.engine.web.paperless.default_params.api_url": {
    "category": "paperless",
    "description": "URL of your Paperless-ngx instance (e.g., http://localhost:8000)",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "API URL",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "http://localhost:8000",
    "visible": true
  },
  "search.engine.web.paperless.default_params.include_content": {
    "category": "paperless",
    "description": "Include full document content (not just snippets)",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include Full Content",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.paperless.default_params.max_results": {
    "category": "paperless",
    "description": "Maximum number of documents to return",
    "editable": true,
    "max_value": 50,
    "min_value": 1,
    "name": "Max Results",
    "options": null,
    "step": 1,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 10,
    "visible": true
  },
  "search.engine.web.paperless.default_params.timeout": {
    "category": "paperless",
    "description": "Request timeout in seconds",
    "editable": true,
    "max_value": 120,
    "min_value": 5,
    "name": "Timeout",
    "options": null,
    "step": 5,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 30,
    "visible": true
  },
  "search.engine.web.paperless.default_params.verify_ssl": {
    "category": "paperless",
    "description": "Verify SSL certificates (disable for self-signed certs)",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Verify SSL",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.paperless.description": {
    "category": "paperless",
    "description": "Human-readable description of the search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Description",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Search your personal Paperless-ngx document archive.",
    "visible": false
  },
  "search.engine.web.paperless.display_name": {
    "category": "paperless",
    "description": "Display name to use in the U.I. for this search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Display Name",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Paperless",
    "visible": false
  },
  "search.engine.web.paperless.enabled": {
    "category": "paperless",
    "description": "Enable or disable this search engine",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Enabled",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.paperless.reliability": {
    "category": "paperless",
    "description": "Reliability score for this search engine",
    "editable": true,
    "max_value": 1.0,
    "min_value": 0.0,
    "name": "Reliability",
    "options": null,
    "step": 0.05,
    "type": "SEARCH",
    "ui_element": "range",
    "value": 0.95,
    "visible": true
  },
  "search.engine.web.paperless.requires_api_key": {
    "category": "paperless",
    "description": "Whether this engine requires an API key",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Requires API Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.paperless.requires_llm": {
    "category": "paperless",
    "description": "Whether this engine requires an LLM for operation",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Requires LLM",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.paperless.strengths": {
    "category": "paperless",
    "description": "Strengths of this search engine",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Strengths",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "personal documents",
      "OCR-processed content",
      "tagged and organized",
      "full-text search",
      "no rate limits",
      "private data"
    ],
    "visible": true
  },
  "search.engine.web.paperless.supports_full_search": {
    "category": "paperless",
    "description": "Whether this engine supports full document search",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Supports Full Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.paperless.weaknesses": {
    "category": "paperless",
    "description": "Weaknesses of this search engine",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Weaknesses",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "keyword-based search only",
      "no semantic understanding",
      "limited query operators"
    ],
    "visible": true
  },
  "search.engine.web.parallel.default_params.allow_local_engines": {
    "category": "parallel",
    "description": "⚠️ PRIVACY WARNING: Allow local/private document engines in parallel search. This may expose personal data from your documents to web search queries and LLMs. Only enable if you understand the privacy implications.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Allow Local Engines",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.parallel.default_params.enable_llm_relevance_filter": {
    "category": "parallel",
    "description": "Enable LLM-based relevance filtering to improve result quality by filtering out irrelevant results. This adds an extra LLM call but significantly improves result relevance.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Enable LLM Relevance Filter",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.parallel.default_params.max_engines_to_select": {
    "category": "parallel",
    "description": "Maximum number of search engines to select and run in parallel",
    "editable": true,
    "max_value": 10,
    "min_value": 1,
    "name": "Max Engines to Select",
    "options": null,
    "step": 1,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 5,
    "visible": true
  },
  "search.engine.web.parallel.default_params.use_api_key_services": {
    "category": "parallel",
    "description": "Include search engines that require API keys",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Use API Key Services",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.parallel.description": {
    "category": "parallel",
    "description": "Human-readable description of the search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Description",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Executes multiple search engines in parallel and combines their results. Uses LLM to select the most appropriate engines for each query.",
    "visible": true
  },
  "search.engine.web.parallel.display_name": {
    "category": "parallel",
    "description": "Display name to use in the U.I. for this search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Display Name",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Parallel Search",
    "visible": true
  },
  "search.engine.web.parallel.reliability": {
    "category": "parallel",
    "description": "Reliability of the parallel search engine",
    "editable": true,
    "max_value": 1.0,
    "min_value": 0.0,
    "name": "Reliability",
    "options": null,
    "step": 0.05,
    "type": "SEARCH",
    "ui_element": "range",
    "value": 0.9,
    "visible": true
  },
  "search.engine.web.parallel.requires_api_key": {
    "category": "parallel",
    "description": "Whether this search engine requires an API key",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Requires Api Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.parallel.requires_llm": {
    "category": "parallel",
    "description": "Whether this search engine requires an LLM for engine selection",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Requires LLM",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.parallel.strengths": {
    "category": "parallel",
    "description": "Strengths of this search engine",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Strengths",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": "[\"Comprehensive results from multiple sources\", \"Parallel execution for faster results\", \"Intelligent engine selection\", \"Automatic deduplication\", \"Combines strengths of all engines\"]",
    "visible": true
  },
  "search.engine.web.parallel.supports_full_search": {
    "category": "parallel",
    "description": "Whether this search engine supports full document search",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Supports Full Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.parallel.weaknesses": {
    "category": "parallel",
    "description": "Weaknesses of this search engine",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Weaknesses",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": "[\"Higher resource usage\", \"May hit rate limits on multiple engines\", \"Results may vary in quality\", \"Requires LLM for optimal selection\"]",
    "visible": true
  },
  "search.engine.web.pubchem": {
    "category": "pubchem",
    "description": "PubChem search engine configuration",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "PubChem Search Engine",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": {
      "description": "Search millions of chemical compounds with structures, properties, and bioactivity data.",
      "reliability": 0.95,
      "requires_api_key": false,
      "requires_llm": true
    },
    "visible": false
  },
  "search.engine.web.pubchem.default_params.include_synonyms": {
    "category": "pubchem",
    "description": "Include compound synonyms in full content results.",
    "editable": true,
    "name": "Include Synonyms",
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.pubchem.default_params.max_results": {
    "category": "pubchem",
    "description": "Maximum number of results to retrieve from PubChem.",
    "editable": true,
    "max_value": 50,
    "min_value": 1,
    "name": "Max Results",
    "type": "SEARCH",
    "ui_element": "number",
    "value": 10,
    "visible": true
  },
  "search.engine.web.pubchem.description": {
    "category": "pubchem",
    "description": "Human-readable description of the search engine.",
    "editable": false,
    "name": "Description",
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Search millions of chemical compounds with structures, properties, and bioactivity data.",
    "visible": false
  },
  "search.engine.web.pubchem.display_name": {
    "category": "pubchem",
    "description": "Display name for PubChem search engine.",
    "editable": false,
    "name": "Display Name",
    "type": "SEARCH",
    "ui_element": "text",
    "value": "PubChem",
    "visible": false
  },
  "search.engine.web.pubchem.reliability": {
    "category": "pubchem",
    "description": "Reliability score for PubChem.",
    "editable": true,
    "max_value": 1.0,
    "min_value": 0.0,
    "name": "Reliability",
    "step": 0.05,
    "type": "SEARCH",
    "ui_element": "range",
    "value": 0.95,
    "visible": true
  },
  "search.engine.web.pubchem.requires_api_key": {
    "category": "pubchem",
    "description": "PubChem is free and does not require an API key.",
    "editable": false,
    "name": "Requires API Key",
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": false
  },
  "search.engine.web.pubchem.strengths": {
    "category": "pubchem",
    "description": "Key strengths of PubChem.",
    "editable": true,
    "name": "Strengths",
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "chemistry",
      "compounds",
      "drug information",
      "molecular properties",
      "bioactivity"
    ],
    "visible": true
  },
  "search.engine.web.pubchem.weaknesses": {
    "category": "pubchem",
    "description": "Limitations of PubChem.",
    "editable": true,
    "name": "Weaknesses",
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "chemistry only",
      "technical data",
      "requires chemical knowledge"
    ],
    "visible": true
  },
  "search.engine.web.pubmed.api_key": {
    "category": "pubmed",
    "description": "The PubMed API key to use.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Api Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "password",
    "value": "",
    "visible": true
  },
  "search.engine.web.pubmed.default_params.days_limit": {
    "category": "pubmed",
    "description": "Restrict results to articles published within the last N days. Leave empty for no time restriction.",
    "editable": true,
    "max_value": null,
    "min_value": 0,
    "name": "Days Limit",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 0,
    "visible": true
  },
  "search.engine.web.pubmed.default_params.full_text_limit": {
    "category": "pubmed",
    "description": "Maximum number of full-text articles to download from PubMed Central when get_full_text is enabled.",
    "editable": true,
    "max_value": null,
    "min_value": 0,
    "name": "Full Text Limit",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 3,
    "visible": true
  },
  "search.engine.web.pubmed.default_params.get_abstracts": {
    "category": "pubmed",
    "description": "Fetch article abstracts for search results. Recommended for understanding paper content.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Get Abstracts",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.pubmed.default_params.get_full_text": {
    "category": "pubmed",
    "description": "Attempt to retrieve full-text articles from PubMed Central (PMC). Only works for open-access papers.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Get Full Text",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.pubmed.default_params.include_authors_in_context": {
    "category": "pubmed",
    "description": "Include author names in context for analysis",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include Authors in Context",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.pubmed.default_params.include_citation_in_context": {
    "category": "pubmed",
    "description": "Include volume, issue, and pages in context for analysis",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include Citation Details in Context",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.pubmed.default_params.include_doi_in_context": {
    "category": "pubmed",
    "description": "Include DOI (Digital Object Identifier) in context for analysis",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include DOI in Context",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.pubmed.default_params.include_full_date_in_context": {
    "category": "pubmed",
    "description": "Include full publication date in context for analysis",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include Full Date in Context",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.pubmed.default_params.include_journal_in_context": {
    "category": "pubmed",
    "description": "Include journal name in context for analysis",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include Journal in Context",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.pubmed.default_params.include_keywords_in_context": {
    "category": "pubmed",
    "description": "Include article keywords in context for analysis",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include Keywords in Context",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.pubmed.default_params.include_language_in_context": {
    "category": "pubmed",
    "description": "Include language indicator in context for analysis",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include Language in Context",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.pubmed.default_params.include_mesh_terms_in_context": {
    "category": "pubmed",
    "description": "Include MeSH terms (medical subject headings) in context for analysis",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include MeSH Terms in Context",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.pubmed.default_params.include_pmc_availability_in_context": {
    "category": "pubmed",
    "description": "Include PMC free full text availability in context for analysis",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include PMC Availability in Context",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.pubmed.default_params.include_pmid_in_context": {
    "category": "pubmed",
    "description": "Include PubMed ID in context for analysis",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include PMID in Context",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.pubmed.default_params.include_publication_type_in_context": {
    "category": "pubmed",
    "description": "Include publication type (e.g., Clinical Trial, Meta-Analysis) in context for analysis",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include Publication Type in Context",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.pubmed.default_params.include_year_in_context": {
    "category": "pubmed",
    "description": "Include publication year in context for analysis",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include Year in Context",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.pubmed.default_params.max_keywords": {
    "category": "pubmed",
    "description": "Maximum number of keywords to show (0 = all)",
    "editable": true,
    "max_value": 10,
    "min_value": 0,
    "name": "Max Keywords",
    "options": null,
    "step": 1,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 3,
    "visible": true
  },
  "search.engine.web.pubmed.default_params.max_mesh_terms": {
    "category": "pubmed",
    "description": "Maximum number of MeSH terms to show (0 = all)",
    "editable": true,
    "max_value": 10,
    "min_value": 0,
    "name": "Max MeSH Terms",
    "options": null,
    "step": 1,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 3,
    "visible": true
  },
  "search.engine.web.pubmed.default_params.max_results": {
    "category": "pubmed",
    "description": "Maximum number of PubMed articles to retrieve per search query.",
    "editable": true,
    "max_value": null,
    "min_value": 1,
    "name": "Max Results",
    "options": null,
    "step": 1,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 20,
    "visible": true
  },
  "search.engine.web.pubmed.default_params.optimize_queries": {
    "category": "pubmed",
    "description": "Automatically optimize natural language queries for PubMed's specialized syntax (MeSH terms, Boolean operators).",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Optimize Queries",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.pubmed.description": {
    "category": "pubmed",
    "description": "Human-readable description of the search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Description",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Search papers indexed by PubMed.",
    "visible": false
  },
  "search.engine.web.pubmed.display_name": {
    "category": "pubmed",
    "description": "Display name to use in the U.I. for this search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Display Name",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "PubMed",
    "visible": false
  },
  "search.engine.web.pubmed.reliability": {
    "category": "pubmed",
    "description": "Reliability rating (0-1) for PubMed. Peer-reviewed biomedical literature is highly reliable.",
    "editable": true,
    "max_value": 1.0,
    "min_value": 0.0,
    "name": "Reliability",
    "options": null,
    "step": 0.05,
    "type": "SEARCH",
    "ui_element": "range",
    "value": 0.98,
    "visible": true
  },
  "search.engine.web.pubmed.requires_api_key": {
    "category": "pubmed",
    "description": "Whether PubMed requires an NCBI API key. Optional but recommended for higher rate limits.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Requires Api Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.pubmed.requires_llm": {
    "category": "pubmed",
    "description": "Whether PubMed query optimization uses LLM. Helps convert natural language to effective PubMed queries.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Requires Llm",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.pubmed.strengths": {
    "category": "pubmed",
    "description": "Key advantages of PubMed: Peer-reviewed biomedical literature, MeSH indexing, abstracts, citation data, free access.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Strengths",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "biomedical literature",
      "medical research",
      "clinical studies",
      "life sciences",
      "health information",
      "scientific papers"
    ],
    "visible": true
  },
  "search.engine.web.pubmed.use_in_auto_search": {
    "category": "pubmed",
    "description": "Include PubMed in auto search mode",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include in Auto Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.pubmed.weaknesses": {
    "category": "pubmed",
    "description": "Limitations of PubMed: Limited to biomedical literature, keyword-based search, full-text only for open-access papers.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Weaknesses",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "non-medical topics",
      "very recent papers may be missing",
      "limited to published research"
    ],
    "visible": true
  },
  "search.engine.web.scaleserp.api_key": {
    "category": "scaleserp",
    "description": "The ScaleSerp API key to use. Get yours at https://scaleserp.com",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Api Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "password",
    "value": "",
    "visible": true
  },
  "search.engine.web.scaleserp.default_params.device": {
    "category": "scaleserp",
    "description": "Device type for search results",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Device",
    "options": [
      {
        "label": "Desktop",
        "value": "desktop"
      },
      {
        "label": "Mobile",
        "value": "mobile"
      }
    ],
    "step": null,
    "type": "SEARCH",
    "ui_element": "select",
    "value": "desktop",
    "visible": true
  },
  "search.engine.web.scaleserp.default_params.enable_cache": {
    "category": "scaleserp",
    "description": "Enable 1-hour caching to save API credits (cached searches are FREE within 1 hour)",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Enable Caching",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.scaleserp.default_params.include_full_content": {
    "category": "scaleserp",
    "description": "Include full webpage content in results (may slow down search)",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include Full Content",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.scaleserp.default_params.language": {
    "category": "scaleserp",
    "description": "Language code for search results (e.g., 'en', 'es', 'fr')",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Language",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "en",
    "visible": true
  },
  "search.engine.web.scaleserp.default_params.location": {
    "category": "scaleserp",
    "description": "Location for localized results (e.g., 'United States', 'London,England,United Kingdom')",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Location",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "United States",
    "visible": true
  },
  "search.engine.web.scaleserp.default_params.safe_search": {
    "category": "scaleserp",
    "description": "Enable or disable safe search filtering",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Safe Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.scaleserp.description": {
    "category": "scaleserp",
    "description": "Human-readable description of the search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Description",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Cost-effective Google Search API with 1-hour free caching that can reduce costs by 40-70% for repeated searches.",
    "visible": false
  },
  "search.engine.web.scaleserp.display_name": {
    "category": "scaleserp",
    "description": "Display name to use in the U.I. for this search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Display Name",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "ScaleSerp",
    "visible": false
  },
  "search.engine.web.scaleserp.reliability": {
    "category": "scaleserp",
    "description": "Reliability of the ScaleSerp search engine",
    "editable": true,
    "max_value": 1.0,
    "min_value": 0.0,
    "name": "Reliability",
    "options": null,
    "step": 0.05,
    "type": "SEARCH",
    "ui_element": "range",
    "value": 0.95,
    "visible": true
  },
  "search.engine.web.scaleserp.requires_api_key": {
    "category": "scaleserp",
    "description": "Whether this search engine requires an API key",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Requires Api Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": false
  },
  "search.engine.web.scaleserp.requires_llm": {
    "category": "scaleserp",
    "description": "Whether this search engine requires an LLM for relevance filtering",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Requires LLM",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": false
  },
  "search.engine.web.scaleserp.strengths": {
    "category": "scaleserp",
    "description": "Strengths of this search engine",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Strengths",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "1-hour free caching for repeated searches",
      "High-quality Google search results",
      "Real-time results with knowledge graph",
      "Cached searches don't count against quota",
      "Rich snippets and related questions"
    ],
    "visible": false
  },
  "search.engine.web.scaleserp.supports_full_search": {
    "category": "scaleserp",
    "description": "Whether this search engine supports full document search",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Supports Full Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": false
  },
  "search.engine.web.scaleserp.weaknesses": {
    "category": "scaleserp",
    "description": "Weaknesses of this search engine",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Weaknesses",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "Requires API key with usage limits",
      "Not specialized for academic content",
      "Cache only lasts 1 hour"
    ],
    "visible": false
  },
  "search.engine.web.searxng.default_params.categories": {
    "category": "searxng",
    "description": "SearXNG search categories to use (general, images, videos, news, music, files, etc.).",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Categories",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "general"
    ],
    "visible": true
  },
  "search.engine.web.searxng.default_params.delay_between_requests": {
    "category": "searxng",
    "description": "Seconds to wait between SearXNG requests. Set higher values to avoid rate limiting on public instances.",
    "editable": true,
    "env_var": "SEARXNG_DELAY",
    "max_value": null,
    "min_value": 0,
    "name": "Delay Between Requests",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 0,
    "visible": true
  },
  "search.engine.web.searxng.default_params.include_full_content": {
    "category": "searxng",
    "description": "Fetch full webpage content for SearXNG results, not just snippets.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include Full Content",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.searxng.default_params.instance_url": {
    "category": "searxng",
    "description": "The SearXNG API endpoint URL.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Endpoint URL",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "http://localhost:8080",
    "visible": true
  },
  "search.engine.web.searxng.default_params.language": {
    "category": "searxng",
    "description": "Language code for SearXNG results (e.g., 'en', 'de', 'fr').",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Language",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "en",
    "visible": true
  },
  "search.engine.web.searxng.default_params.max_results": {
    "category": "searxng",
    "description": "Maximum number of results to retrieve from SearXNG per search.",
    "editable": true,
    "max_value": null,
    "min_value": 1,
    "name": "Max Results",
    "options": null,
    "step": 1,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 15,
    "visible": true
  },
  "search.engine.web.searxng.default_params.safe_search": {
    "category": "searxng",
    "description": "Configure the safe search level",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Safe Search",
    "options": [
      {
        "label": "Off",
        "value": "OFF"
      },
      {
        "label": "Moderate",
        "value": "MODERATE"
      },
      {
        "label": "Strict",
        "value": "STRICT"
      }
    ],
    "step": null,
    "type": "SEARCH",
    "ui_element": "select",
    "value": "OFF",
    "visible": true
  },
  "search.engine.web.searxng.description": {
    "category": "searxng",
    "description": "Human-readable description of the search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Description",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "A locally-hosted meta-search engine.",
    "visible": false
  },
  "search.engine.web.searxng.display_name": {
    "category": "searxng",
    "description": "Display name to use in the U.I. for this search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Display Name",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "SearXNG (Locally-hosted)",
    "visible": false
  },
  "search.engine.web.searxng.reliability": {
    "category": "searxng",
    "description": "Reliability rating (0-1) for SearXNG. Aggregates multiple search engines for broad coverage.",
    "editable": true,
    "max_value": 1.0,
    "min_value": 0.0,
    "name": "Reliability",
    "options": null,
    "step": 0.05,
    "type": "SEARCH",
    "ui_element": "range",
    "value": 1.0,
    "visible": true
  },
  "search.engine.web.searxng.requires_api_key": {
    "category": "searxng",
    "description": "Whether SearXNG requires an API key. No - SearXNG is self-hosted and free.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Requires Api Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.searxng.strengths": {
    "category": "searxng",
    "description": "Key advantages of SearXNG: Free, self-hosted, privacy-respecting, aggregates multiple engines, no API limits.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Strengths",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "comprehensive general information",
      "current events and news",
      "technical documentation",
      "factual queries",
      "historical information",
      "consumer products",
      "educational content",
      "multi-source aggregation",
      "real-time results",
      "combined results from major search engines"
    ],
    "visible": true
  },
  "search.engine.web.searxng.supports_full_search": {
    "category": "searxng",
    "description": "Whether SearXNG supports fetching full webpage content beyond snippets.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Supports Full Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.searxng.use_in_auto_search": {
    "category": "searxng",
    "description": "Include SearXNG in auto search mode",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include in Auto Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.searxng.weaknesses": {
    "category": "searxng",
    "description": "Limitations of SearXNG: Requires self-hosting, public instances may have rate limits, result quality varies.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Weaknesses",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "requires self-hosting",
      "depends on other search engines",
      "may be rate limited by underlying engines"
    ],
    "visible": true
  },
  "search.engine.web.semantic_scholar": {
    "category": "semantic_scholar",
    "description": "Semantic Scholar search engine configuration",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Semantic Scholar Search Engine",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": {
      "description": "Search millions of academic papers across all scientific fields with AI-powered features",
      "reliability": 0.9,
      "requires_api_key": false,
      "requires_llm": true
    },
    "visible": false
  },
  "search.engine.web.semantic_scholar.api_key": {
    "category": "semantic_scholar",
    "description": "Semantic Scholar API key (optional but recommended for higher rate limits). Get one at https://www.semanticscholar.org/product/api",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "API Key (Optional)",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "password",
    "value": "",
    "visible": true
  },
  "search.engine.web.semantic_scholar.default_params.citation_limit": {
    "category": "semantic_scholar",
    "description": "Maximum number of citations to fetch per paper",
    "editable": true,
    "max_value": 50,
    "min_value": 1,
    "name": "Citation Limit",
    "options": null,
    "step": 1,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 10,
    "visible": true
  },
  "search.engine.web.semantic_scholar.default_params.get_abstracts": {
    "category": "semantic_scholar",
    "description": "Fetch full abstracts for papers",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Get Abstracts",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.semantic_scholar.default_params.get_citations": {
    "category": "semantic_scholar",
    "description": "Fetch citation information for papers",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Get Citations",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.semantic_scholar.default_params.get_references": {
    "category": "semantic_scholar",
    "description": "Fetch reference information for papers",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Get References",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.semantic_scholar.default_params.get_tldr": {
    "category": "semantic_scholar",
    "description": "Fetch AI-generated TLDR summaries for papers",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Get TLDR Summaries",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.semantic_scholar.default_params.max_results": {
    "category": "semantic_scholar",
    "description": "Maximum number of results to retrieve",
    "editable": true,
    "max_value": 100,
    "min_value": 1,
    "name": "Max Results",
    "options": null,
    "step": 1,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 20,
    "visible": true
  },
  "search.engine.web.semantic_scholar.default_params.optimize_queries": {
    "category": "semantic_scholar",
    "description": "Use LLM to optimize natural language queries for better search results",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Optimize Queries",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.semantic_scholar.default_params.reference_limit": {
    "category": "semantic_scholar",
    "description": "Maximum number of references to fetch per paper",
    "editable": true,
    "max_value": 50,
    "min_value": 1,
    "name": "Reference Limit",
    "options": null,
    "step": 1,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 10,
    "visible": true
  },
  "search.engine.web.semantic_scholar.description": {
    "category": "semantic_scholar",
    "description": "Human-readable description of the search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Description",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "AI-powered search for scientific literature. Features include TLDR summaries, citation graphs, and semantic search across millions of papers.",
    "visible": false
  },
  "search.engine.web.semantic_scholar.display_name": {
    "category": "semantic_scholar",
    "description": "Display name to use in the U.I. for this search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Display Name",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Semantic Scholar",
    "visible": false
  },
  "search.engine.web.semantic_scholar.reliability": {
    "category": "semantic_scholar",
    "description": "Reliability rating for the search engine",
    "editable": true,
    "max_value": 1.0,
    "min_value": 0.0,
    "name": "Reliability",
    "options": null,
    "step": 0.05,
    "type": "SEARCH",
    "ui_element": "range",
    "value": 0.9,
    "visible": true
  },
  "search.engine.web.semantic_scholar.requires_api_key": {
    "category": "semantic_scholar",
    "description": "Whether this search engine requires an API key",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Requires API Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.semantic_scholar.strengths": {
    "category": "semantic_scholar",
    "description": "Strengths of this search engine",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Strengths",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "AI-powered features",
      "TLDR summaries",
      "citation graphs",
      "semantic search",
      "all scientific fields",
      "no API key required",
      "computer science focus",
      "paper influence metrics"
    ],
    "visible": true
  },
  "search.engine.web.semantic_scholar.use_in_auto_search": {
    "category": "semantic_scholar",
    "description": "Include Semantic Scholar in auto search mode",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include in Auto Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.semantic_scholar.weaknesses": {
    "category": "semantic_scholar",
    "description": "Weaknesses of this search engine",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Weaknesses",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "rate limits without API key",
      "not all papers have TLDR",
      "coverage varies by field",
      "newer papers may be missing"
    ],
    "visible": true
  },
  "search.engine.web.serpapi.api_key": {
    "category": "serpapi",
    "description": "The Serp API key to use.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "API Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "password",
    "value": "",
    "visible": true
  },
  "search.engine.web.serpapi.default_params.region": {
    "category": "serpapi",
    "description": "Geographic region for search results (e.g., 'us', 'uk'). Results prioritized from this region.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Region",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "us",
    "visible": true
  },
  "search.engine.web.serpapi.default_params.safe_search": {
    "category": "serpapi",
    "description": "Enable safe search to filter explicit content from results.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Safe Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.serpapi.default_params.search_language": {
    "category": "serpapi",
    "description": "Language for search queries and results. Filters results by language.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Search Language",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "English",
    "visible": true
  },
  "search.engine.web.serpapi.default_params.time_period": {
    "category": "serpapi",
    "description": "Time filter for results: 'd' (day), 'w' (week), 'm' (month), 'y' (year), or empty for all time.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Time Period",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "y",
    "visible": true
  },
  "search.engine.web.serpapi.description": {
    "category": "serpapi",
    "description": "Human-readable description of the search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Description",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Search the web with Google's search API.",
    "visible": false
  },
  "search.engine.web.serpapi.display_name": {
    "category": "serpapi",
    "description": "Display name to use in the U.I. for this search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Display Name",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "SerpApi",
    "visible": false
  },
  "search.engine.web.serpapi.reliability": {
    "category": "serpapi",
    "description": "Reliability score (0-1). SerpAPI rated moderate (0.6) - good for general search but less authoritative than specialized sources.",
    "editable": true,
    "max_value": 1.0,
    "min_value": 0.0,
    "name": "Reliability",
    "options": null,
    "step": 0.05,
    "type": "SEARCH",
    "ui_element": "range",
    "value": 0.6,
    "visible": true
  },
  "search.engine.web.serpapi.requires_api_key": {
    "category": "serpapi",
    "description": "Indicates this engine requires a SerpAPI key. Get one at serpapi.com.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Requires Api Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.serpapi.strengths": {
    "category": "serpapi",
    "description": "Advantages: Comprehensive web search via Google SERP, good for products, reviews, news, and broad coverage.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Strengths",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "comprehensive web search",
      "product information",
      "reviews",
      "recent content",
      "news",
      "broad coverage"
    ],
    "visible": true
  },
  "search.engine.web.serpapi.supports_full_search": {
    "category": "serpapi",
    "description": "Indicates this engine can fetch full page content after initial search, not just snippets.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Supports Full Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.serpapi.use_in_auto_search": {
    "category": "serpapi",
    "description": "Include SerpAPI in auto search mode",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include in Auto Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.serpapi.weaknesses": {
    "category": "serpapi",
    "description": "Limitations: Requires paid API key with usage limits, not specialized for academic or technical content.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Weaknesses",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "requires API key with usage limits",
      "not specialized for academic content"
    ],
    "visible": true
  },
  "search.engine.web.serper.api_key": {
    "category": "serper",
    "description": "The Serper API key to use. Get yours at https://serper.dev",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Api Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "password",
    "value": "",
    "visible": true
  },
  "search.engine.web.serper.default_params.include_full_content": {
    "category": "serper",
    "description": "Include full webpage content in results (may slow down search)",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include Full Content",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.serper.default_params.region": {
    "category": "serper",
    "description": "Country code for localized results (e.g., 'us', 'gb', 'fr')",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Region",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "us",
    "visible": true
  },
  "search.engine.web.serper.default_params.safe_search": {
    "category": "serper",
    "description": "Enable or disable safe search filtering",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Safe Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.serper.default_params.search_language": {
    "category": "serper",
    "description": "Language code for search results (e.g., 'en', 'es', 'fr')",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Search Language",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "en",
    "visible": true
  },
  "search.engine.web.serper.default_params.time_period": {
    "category": "serper",
    "description": "Filter results by time period ('day', 'week', 'month', 'year', or null for all time)",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Time Period",
    "options": [
      {
        "label": "All Time",
        "value": null
      },
      {
        "label": "Past Day",
        "value": "day"
      },
      {
        "label": "Past Week",
        "value": "week"
      },
      {
        "label": "Past Month",
        "value": "month"
      },
      {
        "label": "Past Year",
        "value": "year"
      }
    ],
    "step": null,
    "type": "SEARCH",
    "ui_element": "select",
    "value": null,
    "visible": true
  },
  "search.engine.web.serper.description": {
    "category": "serper",
    "description": "Human-readable description of the search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Description",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Fast and affordable Google Search API with real-time results.",
    "visible": false
  },
  "search.engine.web.serper.display_name": {
    "category": "serper",
    "description": "Display name to use in the U.I. for this search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Display Name",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Serper",
    "visible": false
  },
  "search.engine.web.serper.reliability": {
    "category": "serper",
    "description": "Reliability of the Serper search engine",
    "editable": true,
    "max_value": 1.0,
    "min_value": 0.0,
    "name": "Reliability",
    "options": null,
    "step": 0.05,
    "type": "SEARCH",
    "ui_element": "range",
    "value": 0.95,
    "visible": true
  },
  "search.engine.web.serper.requires_api_key": {
    "category": "serper",
    "description": "Whether this search engine requires an API key",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Requires Api Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": false
  },
  "search.engine.web.serper.requires_llm": {
    "category": "serper",
    "description": "Whether this search engine requires an LLM for relevance filtering",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Requires LLM",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": false
  },
  "search.engine.web.serper.strengths": {
    "category": "serper",
    "description": "Strengths of this search engine",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Strengths",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "Lightning-fast response times (1-2 seconds)",
      "Very affordable pricing",
      "High-quality Google search results",
      "Real-time results",
      "Knowledge graph and related searches",
      "People Also Ask data",
      "Simple pay-per-use pricing"
    ],
    "visible": false
  },
  "search.engine.web.serper.supports_full_search": {
    "category": "serper",
    "description": "Whether this search engine supports full document search",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Supports Full Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": false
  },
  "search.engine.web.serper.weaknesses": {
    "category": "serper",
    "description": "Weaknesses of this search engine",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Weaknesses",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "Requires API key with usage limits",
      "Not specialized for academic content"
    ],
    "visible": false
  },
  "search.engine.web.stackexchange": {
    "category": "stackexchange",
    "description": "Stack Exchange search engine configuration",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Stack Exchange Search Engine",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": {
      "description": "Search Stack Overflow and other Q&A sites for programming answers.",
      "reliability": 0.9,
      "requires_api_key": false,
      "requires_llm": true
    },
    "visible": false
  },
  "search.engine.web.stackexchange.default_params.max_results": {
    "category": "stackexchange",
    "description": "Maximum number of results to retrieve from Stack Exchange.",
    "editable": true,
    "max_value": 100,
    "min_value": 1,
    "name": "Max Results",
    "type": "SEARCH",
    "ui_element": "number",
    "value": 20,
    "visible": true
  },
  "search.engine.web.stackexchange.default_params.site": {
    "category": "stackexchange",
    "description": "Stack Exchange site to search (stackoverflow, serverfault, superuser, etc.).",
    "editable": true,
    "name": "Site",
    "options": [
      "stackoverflow",
      "serverfault",
      "superuser",
      "askubuntu",
      "unix",
      "math",
      "physics",
      "stats",
      "security",
      "dba"
    ],
    "type": "SEARCH",
    "ui_element": "select",
    "value": "stackoverflow",
    "visible": true
  },
  "search.engine.web.stackexchange.description": {
    "category": "stackexchange",
    "description": "Human-readable description of the search engine.",
    "editable": false,
    "name": "Description",
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Search Stack Overflow and other Q&A sites for programming answers.",
    "visible": false
  },
  "search.engine.web.stackexchange.display_name": {
    "category": "stackexchange",
    "description": "Display name for Stack Exchange search engine.",
    "editable": false,
    "name": "Display Name",
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Stack Exchange",
    "visible": false
  },
  "search.engine.web.stackexchange.reliability": {
    "category": "stackexchange",
    "description": "Reliability score for Stack Exchange.",
    "editable": true,
    "max_value": 1.0,
    "min_value": 0.0,
    "name": "Reliability",
    "step": 0.05,
    "type": "SEARCH",
    "ui_element": "range",
    "value": 0.9,
    "visible": true
  },
  "search.engine.web.stackexchange.requires_api_key": {
    "category": "stackexchange",
    "description": "Stack Exchange is free without an API key (300 requests/day).",
    "editable": false,
    "name": "Requires API Key",
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": false
  },
  "search.engine.web.stackexchange.strengths": {
    "category": "stackexchange",
    "description": "Key strengths of Stack Exchange.",
    "editable": true,
    "name": "Strengths",
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "programming",
      "Q&A",
      "code examples",
      "community moderated",
      "multiple sites"
    ],
    "visible": true
  },
  "search.engine.web.stackexchange.weaknesses": {
    "category": "stackexchange",
    "description": "Limitations of Stack Exchange.",
    "editable": true,
    "name": "Weaknesses",
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "technical focus",
      "rate limited",
      "Q&A format only"
    ],
    "visible": true
  },
  "search.engine.web.tavily.api_key": {
    "category": "tavily",
    "description": "The Tavily API key to use.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Api Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "password",
    "value": "",
    "visible": true
  },
  "search.engine.web.tavily.default_params.include_full_content": {
    "category": "tavily",
    "description": "Include full webpage content in results",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include Full Content",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.tavily.default_params.search_depth": {
    "category": "tavily",
    "description": "Search depth - basic for speed, advanced for quality",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Search Depth",
    "options": [
      "basic",
      "advanced"
    ],
    "step": null,
    "type": "SEARCH",
    "ui_element": "select",
    "value": "basic",
    "visible": true
  },
  "search.engine.web.tavily.description": {
    "category": "tavily",
    "description": "Human-readable description of the search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Description",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "AI-powered search engine optimized for research with built-in answer extraction.",
    "visible": false
  },
  "search.engine.web.tavily.display_name": {
    "category": "tavily",
    "description": "Display name to use in the U.I. for this search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Display Name",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Tavily",
    "visible": false
  },
  "search.engine.web.tavily.reliability": {
    "category": "tavily",
    "description": "Reliability score (0-1). Tavily rated high (0.8) - AI-optimized search designed for research applications.",
    "editable": true,
    "max_value": 1.0,
    "min_value": 0.0,
    "name": "Reliability",
    "options": null,
    "step": 0.05,
    "type": "SEARCH",
    "ui_element": "range",
    "value": 0.8,
    "visible": true
  },
  "search.engine.web.tavily.requires_api_key": {
    "category": "tavily",
    "description": "Indicates this engine requires a Tavily API key. Get one at tavily.com.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Requires Api Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.tavily.strengths": {
    "category": "tavily",
    "description": "Advantages: AI-powered search optimization, built-in answer extraction, research-focused results, fast responses.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Strengths",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "AI-powered search optimization",
      "built-in answer extraction",
      "research-focused results",
      "high-quality content filtering",
      "fast response times"
    ],
    "visible": true
  },
  "search.engine.web.tavily.supports_full_search": {
    "category": "tavily",
    "description": "Indicates this engine can fetch full page content after initial search, not just snippets.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Supports Full Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.tavily.use_in_auto_search": {
    "category": "tavily",
    "description": "Include Tavily in auto search mode",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include in Auto Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.tavily.weaknesses": {
    "category": "tavily",
    "description": "Limitations: Requires paid API key with usage limits, newer service with less historical data coverage.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Weaknesses",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "requires API key with usage limits",
      "newer service with smaller historical data"
    ],
    "visible": true
  },
  "search.engine.web.wayback.default_params.closest_only": {
    "category": "wayback",
    "description": "When enabled, only return the snapshot closest to the target date instead of all available snapshots.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Closest Only",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.wayback.default_params.language": {
    "category": "wayback",
    "description": "Preferred language for archived content when multiple versions are available.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Language",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "English",
    "visible": true
  },
  "search.engine.web.wayback.default_params.max_results": {
    "category": "wayback",
    "description": "Maximum number of archived snapshots to return per search query.",
    "editable": true,
    "max_value": null,
    "min_value": 1,
    "name": "Max Results",
    "options": null,
    "step": 1,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 15,
    "visible": true
  },
  "search.engine.web.wayback.default_params.max_snapshots_per_url": {
    "category": "wayback",
    "description": "Maximum historical snapshots to retrieve for each URL. Lower values are faster; higher shows more history.",
    "editable": true,
    "max_value": null,
    "min_value": 1,
    "name": "Max Snapshots Per Url",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 3,
    "visible": true
  },
  "search.engine.web.wayback.description": {
    "category": "wayback",
    "description": "Human-readable description of the search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Description",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Search the Internet Archive's Wayback Machine.",
    "visible": false
  },
  "search.engine.web.wayback.display_name": {
    "category": "wayback",
    "description": "Display name to use in the U.I. for this search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Display Name",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Wayback",
    "visible": false
  },
  "search.engine.web.wayback.reliability": {
    "category": "wayback",
    "description": "Reliability score (0-1). Wayback rated moderate (0.5) - great for historical content but archives may be incomplete.",
    "editable": true,
    "max_value": 1.0,
    "min_value": 0.0,
    "name": "Reliability",
    "options": null,
    "step": 0.05,
    "type": "SEARCH",
    "ui_element": "range",
    "value": 0.5,
    "visible": true
  },
  "search.engine.web.wayback.requires_api_key": {
    "category": "wayback",
    "description": "Wayback Machine is free and does not require an API key.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Requires Api Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.wayback.strengths": {
    "category": "wayback",
    "description": "Advantages: Access to historical web content, archived/deleted pages, content verification, and website evolution.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Strengths",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "historical web content",
      "archived websites",
      "content verification",
      "deleted or changed web pages",
      "website evolution tracking"
    ],
    "visible": true
  },
  "search.engine.web.wayback.supports_full_search": {
    "category": "wayback",
    "description": "Indicates this engine can fetch full archived page content, not just metadata.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Supports Full Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.wayback.use_in_auto_search": {
    "category": "wayback",
    "description": "Include Wayback in auto search mode",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include in Auto Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.wayback.weaknesses": {
    "category": "wayback",
    "description": "Limitations: Only finds previously archived content, may miss recent changes, archive quality varies by site.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Weaknesses",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "limited to previously archived content",
      "may miss recent changes",
      "archiving quality varies"
    ],
    "visible": true
  },
  "search.engine.web.wikinews.adaptive_search": {
    "category": "wikinews",
    "description": "Automatically adjust the search period based on the query type (recent or historical) to improve news search relevance",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Adaptive Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.wikinews.description": {
    "category": "wikinews",
    "description": "Human-readable description of the search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Description",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Search news articles written by volunteers with verified sources",
    "visible": false
  },
  "search.engine.web.wikinews.display_name": {
    "category": "wikinews",
    "description": "Display name to use in the U.I. for this search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Display Name",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Wikinews",
    "visible": false
  },
  "search.engine.web.wikinews.reliability": {
    "category": "wikinews",
    "description": "Reliability score (0-1). Wikinews rated moderately high (0.85) - volunteer-written but with verified sources.",
    "editable": false,
    "max_value": 1.0,
    "min_value": 0.0,
    "name": "Reliability",
    "options": null,
    "step": 0.05,
    "type": "SEARCH",
    "ui_element": "range",
    "value": 0.85,
    "visible": false
  },
  "search.engine.web.wikinews.requires_api_key": {
    "category": "wikinews",
    "description": "Wikinews is free and does not require an API key.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Requires Api Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": false
  },
  "search.engine.web.wikinews.strengths": {
    "category": "wikinews",
    "description": "Advantages: Recent and historical news coverage, verified sources, general topic coverage, quick overviews.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Strengths",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "recent and historical news",
      "verified sources",
      "general coverage",
      "quick overviews"
    ],
    "visible": true
  },
  "search.engine.web.wikinews.use_in_auto_search": {
    "category": "wikinews",
    "description": "Include Wikinews in auto search mode",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include in Auto Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.wikinews.weaknesses": {
    "category": "wikinews",
    "description": "Limitations: Less coverage of specialized topics, variable article quality, not ideal for breaking news.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Weaknesses",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "less coverage of specialized topics",
      "limited editorial oversight",
      "variable article quality",
      "not ideal for breaking news"
    ],
    "visible": true
  },
  "search.engine.web.wikipedia.default_params.include_content": {
    "category": "wikipedia",
    "description": "Include full article content in results, not just titles and summaries.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include Content",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.wikipedia.default_params.max_results": {
    "category": "wikipedia",
    "description": "Maximum number of Wikipedia articles to return per search query.",
    "editable": true,
    "max_value": null,
    "min_value": 1,
    "name": "Max Results",
    "options": null,
    "step": 1,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 20,
    "visible": true
  },
  "search.engine.web.wikipedia.description": {
    "category": "wikipedia",
    "description": "Human-readable description of the search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Description",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Search Wikipedia articles",
    "visible": false
  },
  "search.engine.web.wikipedia.display_name": {
    "category": "wikipedia",
    "description": "Display name to use in the U.I. for this search engine.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Display Name",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Wikipedia",
    "visible": false
  },
  "search.engine.web.wikipedia.reliability": {
    "category": "wikipedia",
    "description": "Reliability score (0-1). Wikipedia rated very high (0.95) - well-curated, cited content with editorial review.",
    "editable": true,
    "max_value": 1.0,
    "min_value": 0.0,
    "name": "Reliability",
    "options": null,
    "step": 0.05,
    "type": "SEARCH",
    "ui_element": "range",
    "value": 0.95,
    "visible": true
  },
  "search.engine.web.wikipedia.requires_api_key": {
    "category": "wikipedia",
    "description": "Wikipedia is free and does not require an API key.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Requires Api Key",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.engine.web.wikipedia.strengths": {
    "category": "wikipedia",
    "description": "Advantages: Factual information, general knowledge, definitions, historical facts, biographies, and overviews.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Strengths",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "factual information",
      "general knowledge",
      "definitions",
      "historical facts",
      "biographies",
      "overview information"
    ],
    "visible": true
  },
  "search.engine.web.wikipedia.use_in_auto_search": {
    "category": "wikipedia",
    "description": "Include Wikipedia in auto search mode",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Include in Auto Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.engine.web.wikipedia.weaknesses": {
    "category": "wikipedia",
    "description": "Limitations: May lag on recent events, less depth on specialized academic topics, no product comparisons.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Weaknesses",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "recent events",
      "specialized academic topics",
      "product comparisons"
    ],
    "visible": true
  },
  "search.engine.web.zenodo": {
    "category": "zenodo",
    "description": "Zenodo search engine configuration",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Zenodo Search Engine",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "json",
    "value": {
      "description": "Search millions of research datasets, software, and publications with DOIs.",
      "reliability": 0.95,
      "requires_api_key": false,
      "requires_llm": true
    },
    "visible": false
  },
  "search.engine.web.zenodo.default_params.max_results": {
    "category": "zenodo",
    "description": "Maximum number of results to retrieve from Zenodo.",
    "editable": true,
    "max_value": 100,
    "min_value": 1,
    "name": "Max Results",
    "type": "SEARCH",
    "ui_element": "number",
    "value": 20,
    "visible": true
  },
  "search.engine.web.zenodo.description": {
    "category": "zenodo",
    "description": "Human-readable description of the search engine.",
    "editable": false,
    "name": "Description",
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Search millions of research datasets, software, and publications with DOIs.",
    "visible": false
  },
  "search.engine.web.zenodo.display_name": {
    "category": "zenodo",
    "description": "Display name for Zenodo search engine.",
    "editable": false,
    "name": "Display Name",
    "type": "SEARCH",
    "ui_element": "text",
    "value": "Zenodo",
    "visible": false
  },
  "search.engine.web.zenodo.reliability": {
    "category": "zenodo",
    "description": "Reliability score for Zenodo.",
    "editable": true,
    "max_value": 1.0,
    "min_value": 0.0,
    "name": "Reliability",
    "step": 0.05,
    "type": "SEARCH",
    "ui_element": "range",
    "value": 0.95,
    "visible": true
  },
  "search.engine.web.zenodo.requires_api_key": {
    "category": "zenodo",
    "description": "Zenodo is free and does not require an API key for search.",
    "editable": false,
    "name": "Requires API Key",
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": false
  },
  "search.engine.web.zenodo.strengths": {
    "category": "zenodo",
    "description": "Key strengths of Zenodo.",
    "editable": true,
    "name": "Strengths",
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "research data",
      "datasets",
      "DOIs",
      "software",
      "open access",
      "CERN"
    ],
    "visible": true
  },
  "search.engine.web.zenodo.weaknesses": {
    "category": "zenodo",
    "description": "Limitations of Zenodo.",
    "editable": true,
    "name": "Weaknesses",
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "research focus",
      "variable quality",
      "metadata only"
    ],
    "visible": true
  },
  "search.favorites": {
    "category": "search_general",
    "description": "List of favorite search engine IDs that appear at the top of the dropdown. Edit as JSON array, e.g. [\"arxiv\", \"brave\"]",
    "editable": true,
    "name": "Search Favorites",
    "type": "SEARCH",
    "ui_element": "json",
    "value": [
      "arxiv",
      "searxng",
      "library",
      "openalex"
    ],
    "visible": true
  },
  "search.final_max_results": {
    "category": "search_parameters",
    "description": "Maximum unique sources to include in the final research output. Applied once after all search iterations complete, deduplicating and filtering across all accumulated results.",
    "editable": true,
    "max_value": 200.0,
    "min_value": 1,
    "name": "Final Max Results",
    "options": null,
    "step": 1,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 100,
    "visible": true
  },
  "search.iterations": {
    "category": null,
    "description": "Number of search-and-refine cycles to run. Each iteration generates follow-up questions based on previous results to progressively deepen the research. More iterations yield better coverage but increase search and LLM API usage.",
    "editable": true,
    "max_value": null,
    "min_value": 1,
    "name": "Search Iterations",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 3,
    "visible": true
  },
  "search.journal_reputation.exclude_non_published": {
    "category": "journal_quality_filter_parameters",
    "description": "When enabled, excludes results without a formal journal publication reference. This ensures only sources with documented journal publications are included in analysis.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Exclude Non-Published Results",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.journal_reputation.max_context": {
    "category": "journal_quality_filter_parameters",
    "description": "Maximum characters of source content to include when the LLM evaluates journal quality. Larger values provide more context but use more tokens.",
    "editable": true,
    "max_value": 1000000,
    "min_value": 500,
    "name": "Journal Quality Context Size",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 3000,
    "visible": true
  },
  "search.journal_reputation.reanalysis_period": {
    "category": "journal_quality_filter_parameters",
    "description": "How often to refresh cached journal quality assessments. After this period, the LLM will re-evaluate the journal's reputation.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Quality Reanalysis Period",
    "options": [
      {
        "label": "Yearly",
        "value": "365"
      },
      {
        "label": "Every 6 Months",
        "value": "182"
      },
      {
        "label": "Every Month",
        "value": "30"
      }
    ],
    "step": null,
    "type": "SEARCH",
    "ui_element": "select",
    "value": "365",
    "visible": true
  },
  "search.journal_reputation.threshold": {
    "category": "journal_quality_filter_parameters",
    "description": "Minimum journal quality score (1-10 scale) required for academic results. Sources from journals below this threshold are excluded when the filter is enabled.",
    "editable": true,
    "max_value": 10,
    "min_value": 1,
    "name": "Journal Quality Threshold",
    "options": null,
    "step": 1,
    "type": "SEARCH",
    "ui_element": "range",
    "value": 4,
    "visible": true
  },
  "search.max_filtered_results": {
    "category": "search_parameters",
    "description": "Per-query limit on results kept after LLM relevance filtering. Raw results (controlled by 'Max Results') are filtered for relevance, then this setting caps how many are kept. Only applies when relevance filtering is active for the search engine.",
    "editable": true,
    "max_value": 100,
    "min_value": 1,
    "name": "Max Filtered Results",
    "options": null,
    "step": 1,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 20,
    "visible": true
  },
  "search.max_results": {
    "category": "search_parameters",
    "description": "Maximum raw search results to retrieve from the search engine per query, before any relevance filtering is applied.",
    "editable": true,
    "max_value": 50.0,
    "min_value": 1,
    "name": "Max Results",
    "options": null,
    "step": 1,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 50,
    "visible": true
  },
  "search.quality_check_urls": {
    "category": null,
    "description": "Validate that fetched webpage content matches the search result's title and snippet. Helps filter out broken links or mismatched content.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Quality Check Urls",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.question_context_limit": {
    "category": "search_parameters",
    "description": "Maximum number of previous search results provided as context when generating follow-up questions in subsequent iterations. Lower values reduce context size and focus on top results. Set to 0 for unlimited.",
    "editable": true,
    "max_value": 100,
    "min_value": 0,
    "name": "Question Context Limit",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 30,
    "visible": true
  },
  "search.questions_per_iteration": {
    "category": "search_parameters",
    "description": "Number of search queries to generate and execute per iteration. More questions increase coverage but also increase API calls and processing time.",
    "editable": true,
    "max_value": 10.0,
    "min_value": 1.0,
    "name": "Questions Per Iteration",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 1,
    "visible": true
  },
  "search.region": {
    "category": "search_parameters",
    "description": "Geographic region for search results localization. Affects which results are prioritized based on regional relevance.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Search Region",
    "options": [
      {
        "label": "United States",
        "value": "us"
      },
      {
        "label": "United Kingdom",
        "value": "uk"
      },
      {
        "label": "France",
        "value": "fr"
      },
      {
        "label": "Germany",
        "value": "de"
      },
      {
        "label": "Japan",
        "value": "jp"
      },
      {
        "label": "No Region (Worldwide)",
        "value": "wt-wt"
      }
    ],
    "step": null,
    "type": "SEARCH",
    "ui_element": "select",
    "value": "us",
    "visible": true
  },
  "search.safe_search": {
    "category": "search_parameters",
    "description": "Filter out adult and inappropriate content from search results. Passed to search engines that support content filtering.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Safe Search",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.search_language": {
    "category": "search_parameters",
    "description": "Preferred language for search results. Search engines will attempt to return and prioritize results in this language when available.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Search Language",
    "options": [
      {
        "label": "English",
        "value": "English"
      },
      {
        "label": "French",
        "value": "French"
      },
      {
        "label": "German",
        "value": "German"
      },
      {
        "label": "Spanish",
        "value": "Spanish"
      },
      {
        "label": "Italian",
        "value": "Italian"
      },
      {
        "label": "Japanese",
        "value": "Japanese"
      },
      {
        "label": "Chinese",
        "value": "Chinese"
      }
    ],
    "step": null,
    "type": "SEARCH",
    "ui_element": "select",
    "value": "English",
    "visible": true
  },
  "search.search_strategy": {
    "category": "search_parameters",
    "description": "Research methodology. 'source-based': Finds and extracts from sources (good for comprehensive research). 'focused-iteration': Uses entity-based progressive exploration (optimized for factual Q&A, ~95% SimpleQA accuracy, requires larger context windows). 'focused-iteration-standard': Comprehensive variant of focused-iteration with broader exploration. 'iterative-refinement': LLM-guided progressive refinement with gap analysis. 'topic-organization': Organizes research around discovered topic clusters. 'mcp': Agentic ReAct-pattern research using MCP tools.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Search Strategy",
    "options": [
      {
        "label": "Source-Based (Best for small <16,000 context window)",
        "value": "source-based"
      },
      {
        "label": "Focused Iteration - Quick (Minimal text output)",
        "value": "focused-iteration"
      },
      {
        "label": "Focused Iteration - Comprehensive (Needs >16,000 context window)",
        "value": "focused-iteration-standard"
      },
      {
        "label": "MCP ReAct (Agentic research - LLM decides tools)",
        "value": "mcp"
      },
      {
        "label": "LangGraph Agent (Autonomous agentic research)",
        "value": "langgraph-agent"
      }
    ],
    "step": null,
    "type": "SEARCH",
    "ui_element": "select",
    "value": "langgraph-agent",
    "visible": true
  },
  "search.searches_per_section": {
    "category": "search_parameters",
    "description": "Number of independent searches per report section when generating structured reports. Increases coverage but also increases API usage.",
    "editable": true,
    "max_value": 5.0,
    "min_value": 1.0,
    "name": "Searches Per Section",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "number",
    "value": 2,
    "visible": true
  },
  "search.show_all_strategies": {
    "category": "search_parameters",
    "description": "When enabled, all available search strategies (including advanced and experimental ones) are shown in strategy dropdowns. When disabled, only the recommended strategies are shown.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Show All Strategies",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": false,
    "visible": true
  },
  "search.skip_relevance_filter": {
    "category": "search_parameters",
    "description": "When ON, LLM relevance filtering is disabled for all search engines. When OFF, each engine decides automatically: academic engines (arXiv, PubMed) enable filtering since they use keyword matching, while generic engines (Google, Brave) skip it since they already rank by relevance.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Skip Relevance Filter",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.snippets_only": {
    "category": "search_parameters",
    "description": "Only retrieve search snippets instead of full webpage content. Reduces API usage and processing time, but provides less context for analysis.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Snippets Only",
    "options": null,
    "step": null,
    "type": "SEARCH",
    "ui_element": "checkbox",
    "value": true,
    "visible": true
  },
  "search.time_period": {
    "category": "search_parameters",
    "description": "Time range filter for search results. Limits results to content published within the specified period (day, week, month, year, or all time).",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Time Period",
    "options": [
      {
        "label": "Past 24 hours",
        "value": "d"
      },
      {
        "label": "Past week",
        "value": "w"
      },
      {
        "label": "Past month",
        "value": "m"
      },
      {
        "label": "Past year",
        "value": "y"
      },
      {
        "label": "All time",
        "value": "all"
      }
    ],
    "step": null,
    "type": "SEARCH",
    "ui_element": "select",
    "value": "y",
    "visible": true
  },
  "search.tool": {
    "category": "search_general",
    "description": "Search engine to use for research queries. 'Auto' intelligently selects the best engine for each query type. Each engine may require its own API key or service to be configured separately.",
    "editable": true,
    "max_value": null,
    "min_value": null,
    "name": "Search Engine",
    "options": [
      {
        "label": "Auto (Default)",
        "value": "auto"
      },
      {
        "label": "Arxiv",
        "value": "arxiv"
      },
      {
        "label": "Wikipedia",
        "value": "wikipedia"
      },
      {
        "label": "Wikinews",
        "value": "wikinews"
      },
      {
        "label": "Pubmed",
        "value": "pubmed"
      },
      {
        "label": "OpenAlex",
        "value": "openalex"
      },
      {
        "label": "Semantic Scholar",
        "value": "semantic_scholar"
      },
      {
        "label": "Github",
        "value": "github"
      },
      {
        "label": "SerpAPI (Google)",
        "value": "serpapi"
      },
      {
        "label": "ScaleSerp (Google + Caching)",
        "value": "scaleserp"
      },
      {
        "label": "Serper (Google)",
        "value": "serper"
      },
      {
        "label": "SearXNG (Self-hosted)",
        "value": "searxng"
      },
      {
        "label": "Google Programmable Search Engine",
        "value": "google_pse"
      },
      {
        "label": "DuckDuckGo",
        "value": "duckduckgo"
      },
      {
        "label": "Brave",
        "value": "brave"
      },
      {
        "label": "Mojeek",
        "value": "mojeek"
      },
      {
        "label": "Wayback",
        "value": "wayback"
      },
      {
        "label": "Local All",
        "value": "local_all"
      },
      {
        "label": "Multi-Engine Search",
        "value": "parallel"
      },
      {
        "label": "Scientific Search (Academic Focus)",
        "value": "parallel_scientific"
      }
    ],
    "step": null,
    "type": "SEARCH",
    "ui_element": "select",
    "value": "searxng",
    "visible": true
  },
  "security.account_lockout_duration_minutes": {
    "category": "security",
    "description": "Duration in minutes that an account remains locked after exceeding the failed login threshold. Only configurable via environment variable (LDR_SECURITY_ACCOUNT_LOCKOUT_DURATION_MINUTES).",
    "editable": false,
    "max_value": 60,
    "min_value": 1,
    "name": "Account Lockout Duration (Minutes)",
    "type": "APP",
    "ui_element": "number",
    "value": 15,
    "visible": false
  },
  "security.account_lockout_threshold": {
    "category": "security",
    "description": "Number of consecutive failed login attempts before an account is temporarily locked out. Only configurable via environment variable (LDR_SECURITY_ACCOUNT_LOCKOUT_THRESHOLD).",
    "editable": false,
    "max_value": 50,
    "min_value": 3,
    "name": "Account Lockout Threshold",
    "type": "APP",
    "ui_element": "number",
    "value": 10,
    "visible": false
  },
  "security.rate_limit_default": {
    "category": "security",
    "description": "Default rate limit for all HTTP endpoints. Configured via LDR_SECURITY_RATE_LIMIT_DEFAULT environment variable. Multiple limits can be separated by semicolons (e.g., '5000 per hour;50000 per day'). Format: 'N per hour/minute/day'. Requires server restart.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Default Rate Limit",
    "type": "APP",
    "ui_element": "text",
    "value": "5000 per hour;50000 per day",
    "visible": false
  },
  "security.rate_limit_login": {
    "category": "security",
    "description": "Rate limit for login attempts to prevent brute force attacks. Configured via LDR_SECURITY_RATE_LIMIT_LOGIN environment variable (e.g., '5 per 15 minutes'). Requires server restart.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Login Rate Limit",
    "type": "APP",
    "ui_element": "text",
    "value": "5 per 15 minutes",
    "visible": false
  },
  "security.rate_limit_registration": {
    "category": "security",
    "description": "Rate limit for registration attempts to prevent spam. Configured via LDR_SECURITY_RATE_LIMIT_REGISTRATION environment variable (e.g., '3 per hour'). Requires server restart.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Registration Rate Limit",
    "type": "APP",
    "ui_element": "text",
    "value": "3 per hour",
    "visible": false
  },
  "security.rate_limit_settings": {
    "category": "security",
    "description": "Rate limit for settings modification endpoints. Configured via LDR_SECURITY_RATE_LIMIT_SETTINGS environment variable. Requires server restart.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Settings Rate Limit",
    "type": "APP",
    "ui_element": "text",
    "value": "30 per minute",
    "visible": false
  },
  "security.session_remember_me_days": {
    "category": "security",
    "description": "Number of days a 'Remember Me' session remains valid before requiring re-login.",
    "editable": true,
    "max_value": 30,
    "min_value": 1,
    "name": "Remember Me Duration (Days)",
    "type": "APP",
    "ui_element": "number",
    "value": 30,
    "visible": true
  },
  "security.session_timeout_hours": {
    "category": "security",
    "description": "Session timeout in hours for sessions without 'Remember Me' checked. Only applies to internal session validation (browser sessions expire on close).",
    "editable": true,
    "max_value": 24,
    "min_value": 1,
    "name": "Session Timeout (Hours)",
    "type": "APP",
    "ui_element": "number",
    "value": 2,
    "visible": true
  },
  "web.host": {
    "category": null,
    "description": "The host address to listen on. Configured via LDR_WEB_HOST environment variable. Requires server restart.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Host",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "text",
    "value": "0.0.0.0",
    "visible": false
  },
  "web.port": {
    "category": null,
    "description": "The port to listen on. Configured via LDR_WEB_PORT environment variable. Requires server restart.",
    "editable": false,
    "max_value": 65535,
    "min_value": 1,
    "name": "Port",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "number",
    "value": 5000,
    "visible": false
  },
  "web.use_https": {
    "category": null,
    "description": "Whether to enable HTTPS for the web interface. Configured via LDR_WEB_USE_HTTPS environment variable. Requires server restart.",
    "editable": false,
    "max_value": null,
    "min_value": null,
    "name": "Use HTTPS",
    "options": null,
    "step": null,
    "type": "APP",
    "ui_element": "checkbox",
    "value": true,
    "visible": false
  }
}
