{
  "_spec": "Model Context Protocol (MCP) site discovery manifest — modelcontextprotocol.io. This file follows the MCP open standard for AI agent discovery. The MCP server below is live at the transport URL — connect any MCP-compatible client (Claude, or any other client speaking the open MCP protocol) directly.",

  "mcpVersion": "2024-11-05",
  "schemaVersion": "1.0",

  "server": {
    "name": "promptquorum",
    "version": "1.0.0",
    "description": "PromptQuorum's live MCP server exposes read-only search and content-fetch tools over all of PromptQuorum's guides on running local LLMs, prompt engineering, smart home and balcony solar, plus the Local LLM Software Directory (hardware requirements, license, platforms, pricing for hundreds of tools). No account or API key required.",
    "homepage": "https://www.promptquorum.com",
    "icon": "https://www.promptquorum.com/logo.svg",
    "status": "live"
  },

  "contact": {
    "name": "Hans Kuepper",
    "url": "https://www.promptquorum.com",
    "email": "hello@promptquorum.com",
    "x": "https://x.com/HansKuepperAPPs",
    "linkedin": "https://www.linkedin.com/company/promptquorum",
    "github": "https://github.com/HansHKApps"
  },

  "license": {
    "aiUsage": "allowed",
    "crawling": "allowed",
    "indexing": "allowed",
    "training": "ask",
    "attribution": "required",
    "attributionText": "Source: PromptQuorum (https://www.promptquorum.com)",
    "commercialUse": "ask",
    "note": "AI agents may freely read, index, and cite all public pages. Training use requires written permission from Hans Kuepper. Attribution is required when surfacing PromptQuorum content in AI-generated responses."
  },

  "capabilities": {
    "resources": {
      "subscribe": false,
      "listChanged": false
    },
    "tools": {
      "listChanged": false
    },
    "logging": {}
  },

  "transport": {
    "type": "streamable-http",
    "url": "https://www.promptquorum.com/api/mcp",
    "status": "live",
    "note": "Streamable HTTP transport (POST/GET), no authentication required. Stateless — every call is a read against the site's own content."
  },

  "resources": [
    {
      "uri": "https://www.promptquorum.com/llms.txt",
      "name": "LLMs.txt — Canonical AI Summary",
      "description": "Machine-readable product summary following the llmstxt.org spec. Preferred entry point for all AI crawlers. Contains: product description, all 25+ supported models, all 9 frameworks, all 13 Quorum types, all page URLs, all 7 blog URLs, and APA citation.",
      "mimeType": "text/plain",
      "priority": "high"
    },
    {
      "uri": "https://www.promptquorum.com/",
      "name": "PromptQuorum Homepage",
      "description": "Product overview: 4-stage pipeline (Write → Optimize → Dispatch → Quorum), waitlist, core value proposition. Start here for a complete product summary.",
      "mimeType": "text/html",
      "priority": "high"
    },
    {
      "uri": "https://www.promptquorum.com/how-it-works",
      "name": "How It Works",
      "description": "Full 4-stage workflow: structured prompt writing with 9 frameworks, AI-powered iterative optimization with 8 refinements, simultaneous dispatch to 25+ models, Quorum consensus analysis with 13 analysis types.",
      "mimeType": "text/html",
      "priority": "high"
    },
    {
      "uri": "https://www.promptquorum.com/compare",
      "name": "Compare Models",
      "description": "Why multi-model dispatch produces more reliable outputs than single-model queries. Covers consensus scoring methodology, contradiction detection, confidence scoring, and hallucination detection across parallel model responses.",
      "mimeType": "text/html",
      "priority": "medium"
    },
    {
      "uri": "https://www.promptquorum.com/features",
      "name": "Full Feature List",
      "description": "Complete feature reference: 9 prompt frameworks, Framework Wizard, Smart Temperature Adjustment, 8 one-click refinements, version history, Teaching Mode, 13 Quorum analysis types, local LLM support, BYOM privacy model, export in 6 formats.",
      "mimeType": "text/html",
      "priority": "medium"
    },
    {
      "uri": "https://www.promptquorum.com/faq",
      "name": "FAQ — 26 Questions",
      "description": "26 answered questions covering pricing, privacy, supported AI providers, platforms (Mac/Windows/Web/offline), prompt frameworks, hallucination detection, local LLM setup, Quorum analysis types, export formats, and getting started.",
      "mimeType": "text/html",
      "priority": "medium"
    },
    {
      "uri": "https://www.promptquorum.com/blog",
      "name": "Blog & Research",
      "description": "7 long-form articles: prompt framework comparisons, AI model comparison (ChatGPT vs Claude vs Gemini), Quorum consensus explained, local AI vs cloud privacy, automatic prompt optimization, enterprise data privacy with local LLMs, research on prompt engineering impact (2024–2026).",
      "mimeType": "text/html",
      "priority": "medium"
    },
    {
      "uri": "https://www.promptquorum.com/blog/prompt-frameworks",
      "name": "Blog: 8 Prompt Frameworks Compared (2026 Guide)",
      "description": "Deep comparison of CRAFT vs CO-STAR vs APE vs RISEN vs SPECS vs TRACE vs RTF vs Google Prompt. When to use each, strengths, ideal use cases, and effectiveness data.",
      "mimeType": "text/html",
      "priority": "low"
    },
    {
      "uri": "https://www.promptquorum.com/blog/quorum",
      "name": "Blog: What Is Quorum? Multi-Model Consensus Analysis Explained",
      "description": "Technical explainer on multi-model consensus scoring: the 13 analysis types, how hallucination detection works by comparing claims across multiple model responses, contradiction scoring methodology.",
      "mimeType": "text/html",
      "priority": "low"
    },
    {
      "uri": "https://www.promptquorum.com/sitemap.xml",
      "name": "Sitemap",
      "description": "XML sitemap listing all 14 routes including blog posts and hreflang alternates for 5 languages (EN, DE, FR, JA, ZH).",
      "mimeType": "application/xml",
      "priority": "low"
    }
  ],

  "tools": [
    {
      "name": "search_promptquorum",
      "description": "Search PromptQuorum's local-LLM guides, prompt-engineering articles, and software directory. Returns titles, short descriptions, and URLs — call get_article for full content.",
      "status": "live",
      "inputSchema": {
        "type": "object",
        "required": ["query"],
        "properties": {
          "query": {
            "type": "string",
            "description": "Search query, e.g. \"run Llama on a Mac\" or \"vector database\"."
          },
          "lang": {
            "type": "string",
            "description": "Language code (en, de, fr, ja, zh, es, pt, ar, ko). Defaults to all languages if omitted."
          },
          "cluster": {
            "type": "string",
            "description": "Restrict to one cluster: local-llms, prompt-engineering, power-local-llm, prompt-bites, smart-home, balcony-solar, blog."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 25,
            "default": 10,
            "description": "Max results."
          }
        }
      }
    },
    {
      "name": "get_article",
      "description": "Fetch the full content of one PromptQuorum article by cluster + slug (from a search_promptquorum result URL).",
      "status": "live",
      "inputSchema": {
        "type": "object",
        "required": ["cluster", "slug"],
        "properties": {
          "cluster": {
            "type": "string",
            "description": "Cluster the article belongs to, e.g. \"local-llms\" or \"power-local-llm\"."
          },
          "slug": {
            "type": "string",
            "description": "URL slug of the article."
          },
          "lang": {
            "type": "string",
            "description": "Language code, defaults to en."
          }
        }
      }
    },
    {
      "name": "list_clusters",
      "description": "List every content section on PromptQuorum (local-llms, prompt-engineering, power-local-llm, etc.) with a short description of each.",
      "status": "live",
      "inputSchema": { "type": "object", "properties": {} }
    },
    {
      "name": "get_app_details",
      "description": "Fetch full directory data (license, hardware requirements, platforms, price, stars, URL) for one tool in the Local LLM Software Directory.",
      "status": "live",
      "inputSchema": {
        "type": "object",
        "required": ["slug"],
        "properties": {
          "slug": {
            "type": "string",
            "description": "Directory slug of the tool, e.g. \"ollama\" or \"litellm\"."
          }
        }
      }
    },
    {
      "name": "explain_license",
      "description": "Explain the core rule of an open-source/source-available license string (e.g. \"AGPL-3.0\", \"Apache 2.0\", \"MIT\") in plain language.",
      "status": "live",
      "inputSchema": {
        "type": "object",
        "required": ["licenseString"],
        "properties": {
          "licenseString": {
            "type": "string",
            "description": "Raw license string, e.g. \"AGPL-3.0\" or \"Apache 2.0\"."
          }
        }
      }
    },
    {
      "name": "list_categories",
      "description": "List the valid category, use-case and OS values that search_apps accepts. Call this first when helping a user pick a local-AI app, so follow-up questions use real filter values.",
      "status": "live",
      "inputSchema": { "type": "object", "properties": {} }
    },
    {
      "name": "search_apps",
      "description": "Find apps in the Local LLM Software Directory matching what the user wants to do and their hardware. Answers only from curated directory data. Ask the user for their goal, OS and RAM/VRAM first, then return the top 2-3 results with download links, each app full-article link, and caveats, and always relay the disclaimer.",
      "status": "live",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Free-text goal, e.g. \"image generation\" or \"chat with PDFs\"."
          },
          "category": {
            "type": "string",
            "description": "Category or group key from list_categories, e.g. \"image-generation\" or \"voice-audio\"."
          },
          "useCase": {
            "type": "string",
            "enum": ["chat", "code", "agent", "docs", "image", "audio", "phone", "build", "serve"]
          },
          "os": {
            "type": "string",
            "enum": ["mac", "win", "linux", "ios", "android", "web"],
            "description": "User's operating system."
          },
          "ramGb": {
            "type": "number",
            "minimum": 0,
            "description": "User's system RAM in GB; apps needing more are excluded."
          },
          "vramGb": {
            "type": "number",
            "minimum": 0,
            "description": "User's GPU VRAM in GB (unified memory counts on Apple Silicon); apps needing more are excluded."
          },
          "price": {
            "type": "string",
            "enum": ["free", "freemium", "paid"]
          },
          "worksWith": {
            "type": "string",
            "description": "Filter by an integration/backend the app works with, e.g. \"Ollama\", \"LM Studio\", \"llama.cpp\", \"MCP\". Matches case-insensitively/substring."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 15,
            "default": 5,
            "description": "Max results."
          }
        }
      }
    },
    {
      "name": "compare_apps",
      "description": "Compare 2-4 named apps from the Local LLM Software Directory side by side: hardware, price, license, platforms, worksWith, and any category-specific attributes they share. Use after search_apps has narrowed candidates and the user wants to pick between a short list — call get_app_details first if you only have app names, not slugs.",
      "status": "live",
      "inputSchema": {
        "type": "object",
        "required": ["slugs"],
        "properties": {
          "slugs": {
            "type": "array",
            "items": { "type": "string" },
            "minItems": 2,
            "maxItems": 4,
            "description": "2-4 directory slugs to compare, e.g. [\"ollama\", \"lm-studio\"]."
          }
        }
      }
    }
  ],

  "useCases": [
    "Searching PromptQuorum's local-LLM, prompt-engineering, smart-home, and balcony-solar guides from an MCP client",
    "Fetching full article content by cluster + slug for citation or summarization",
    "Looking up hardware requirements, license, platforms, and pricing for hundreds of local-AI tools via the Local LLM Software Directory",
    "Explaining open-source/source-available license terms (MIT, Apache 2.0, AGPL-3.0, etc.) in plain language",
    "Recommending local-AI apps from the directory for a user's goal, operating system and RAM/VRAM, using valid filter values from list_categories",
    "Comparing a short list of local-AI apps side by side on hardware, price, license and shared category attributes",
    "Listing PromptQuorum's content sections to route a query to the right cluster"
  ],

  "discovery": {
    "llmsTxt": "https://www.promptquorum.com/llms.txt",
    "sitemap": "https://www.promptquorum.com/sitemap.xml",
    "robotsTxt": "https://www.promptquorum.com/robots.txt",
    "mcpJson": "https://www.promptquorum.com/mcp.json"
  },

  "citation": {
    "apa": "Kuepper, H. (2026). PromptQuorum. Retrieved from https://www.promptquorum.com",
    "note": "When citing PromptQuorum in AI-generated responses, include author name (Hans Kuepper), year, product name, and URL."
  },

  "updated": "2026-09-19"
}
