{
  "report": "mcp-catalogue-profile",
  "registrySnapshot": "2026-10-04",
  "base": 38977,
  "sections": [
    {
      "id": "topic",
      "title": "Topic",
      "validated": false,
      "question": "What is the server mainly for?",
      "method": "An LLM (gemini-2.5-flash) labels the registry name, title and description twice with differently worded prompts; a label is kept only when both runs agree. Where the two runs disagreed, Gemini and Claude each labelled the entry once more, and a label is kept only when those two agree (1,695 labels). Label list is provisional (provisional-1: 31,019, provisional-2: 6,163).",
      "agreement": {
        "pct": 82.5,
        "agree": 113,
        "n": 137,
        "wilson95": {
          "from": 75,
          "to": 88
        },
        "sampleSize": 150,
        "checked": "2026-10-09",
        "reference": "Claude Opus 5.5, judging blind (an AI reference, not a human-labelled set)",
        "source": "docs/gold-set/RESULTS-2026-10-09.md",
        "notInMeasurement": 1695
      },
      "sources": [
        {
          "host": "registry.modelcontextprotocol.io",
          "what": "name, title, description"
        }
      ],
      "checked": {
        "from": "2026-10-08",
        "to": "2026-10-09"
      },
      "noRecordLabel": null,
      "coverage": {
        "base": 38977,
        "records": 38977,
        "declared": 37182,
        "undeclared": 1795,
        "undeclaredOurLimit": 0,
        "inapplicable": 0,
        "noRecord": 0,
        "declaredPctOfApplicable": 95.4,
        "declaredPctOfBase": 95.4
      },
      "values": [
        {
          "value": "data-and-databases",
          "count": 5724,
          "pct": 15.4
        },
        {
          "value": "developer-tools",
          "count": 5367,
          "pct": 14.4
        },
        {
          "value": "finance-and-payments",
          "count": 4897,
          "pct": 13.2
        },
        {
          "value": "commerce-and-marketing",
          "count": 4105,
          "pct": 11
        },
        {
          "value": "search-and-web-data",
          "count": 3242,
          "pct": 8.7
        },
        {
          "value": "productivity-and-docs",
          "count": 2392,
          "pct": 6.4
        },
        {
          "value": "security",
          "count": 2075,
          "pct": 5.6
        },
        {
          "value": "media-and-design",
          "count": 1995,
          "pct": 5.4
        },
        {
          "value": "ai-and-ml",
          "count": 1431,
          "pct": 3.8
        },
        {
          "value": "communication-and-social",
          "count": 1411,
          "pct": 3.8
        },
        {
          "value": "science-health-and-education",
          "count": 1388,
          "pct": 3.7
        },
        {
          "value": "other",
          "count": 1367,
          "pct": 3.7
        },
        {
          "value": "cloud-and-devops",
          "count": 1350,
          "pct": 3.6
        },
        {
          "value": "iot-and-hardware",
          "count": 438,
          "pct": 1.2
        }
      ],
      "undeclared": [
        {
          "label": "the two runs disagreed, and so did the Gemini + Claude tie-break",
          "count": 1795,
          "pct": 100
        }
      ],
      "inapplicable": []
    },
    {
      "id": "pricing",
      "title": "Pricing model",
      "validated": false,
      "question": "How is the product on the server’s website priced?",
      "method": "The website named in the registry entry (and its pricing page when linked) is read with a plain request; robots.txt is honoured. An LLM (gemini-2.5-flash-lite: 7,671, gemini-2.5-flash: 337, gemini-3.5-flash-lite: 34) names the pricing model and quotes the page. An answer is kept only if the quote is found on the page, passes a rule check that those words can carry the value, and a second, independent call that sees only the quote reaches the same value; 531 answers from the first batches also needed two differently worded runs to agree (7,511 used one run plus these checks). 1,658 answers where the model said “freemium” but the quote shows only a free allowance plus metered credits are counted as usage-based, as the definition states. Every “contact sales” answer was judged again by Gemini and Claude; 22 answers kept from that pass are those where both agreed and the quote check passed.",
      "agreement": {
        "pct": 84.1,
        "agree": 90,
        "n": 107,
        "wilson95": {
          "from": 76,
          "to": 90
        },
        "sampleSize": 150,
        "checked": "2026-10-09",
        "reference": "Claude Opus 5.5, judging blind (an AI reference, not a human-labelled set)",
        "source": "docs/gold-set/RESULTS-2026-10-09.md",
        "notInMeasurement": 22
      },
      "sources": [
        {
          "host": "registry.modelcontextprotocol.io",
          "what": "websiteUrl"
        },
        {
          "host": "the server’s own website",
          "what": "homepage and pricing page text"
        }
      ],
      "checked": {
        "from": "2026-10-08",
        "to": "2026-10-09"
      },
      "noRecordLabel": "registry entry has no websiteUrl",
      "coverage": {
        "base": 38977,
        "records": 20321,
        "declared": 8064,
        "undeclared": 12257,
        "undeclaredOurLimit": 1719,
        "inapplicable": 0,
        "noRecord": 18656,
        "declaredPctOfApplicable": 39.7,
        "declaredPctOfBase": 20.7
      },
      "values": [
        {
          "value": "freemium",
          "count": 3631,
          "pct": 45
        },
        {
          "value": "usage-based",
          "count": 2710,
          "pct": 33.6
        },
        {
          "value": "free",
          "count": 941,
          "pct": 11.7
        },
        {
          "value": "open-source",
          "count": 427,
          "pct": 5.3
        },
        {
          "value": "paid-subscription",
          "count": 337,
          "pct": 4.2
        },
        {
          "value": "contact-sales",
          "count": 18,
          "pct": 0.2
        }
      ],
      "undeclared": [
        {
          "label": "uncertain: answer held back by the quote check",
          "count": 4940,
          "pct": 40.3
        },
        {
          "label": "pages read do not state pricing",
          "count": 3067,
          "pct": 25
        },
        {
          "label": "website link is a code-hosting, package or marketplace page",
          "count": 2063,
          "pct": 16.8
        },
        {
          "label": "our limit: site could not be fetched by a plain request (HTTP error, network, not HTML)",
          "count": 920,
          "pct": 7.5
        },
        {
          "label": "our limit: page is nearly empty without JavaScript (not re-read in a browser)",
          "count": 710,
          "pct": 5.8
        },
        {
          "label": "website is gone (HTTP 404/410)",
          "count": 378,
          "pct": 3.1
        },
        {
          "label": "our limit: model output unusable on every attempt",
          "count": 89,
          "pct": 0.7
        },
        {
          "label": "site’s robots.txt disallows reading (respected)",
          "count": 74,
          "pct": 0.6
        },
        {
          "label": "uncertain: the Gemini + Claude judges disagreed",
          "count": 16,
          "pct": 0.1
        }
      ],
      "inapplicable": []
    },
    {
      "id": "language",
      "title": "Programming language",
      "validated": true,
      "question": "Which language is most of the linked GitHub repository written in?",
      "method": "GitHub’s /languages byte counts for the linked repository; the language with the most bytes. A repository can be a monorepo, so this describes the repository, not necessarily the server alone.",
      "sources": [
        {
          "host": "api.github.com",
          "what": "GET /repos/{owner}/{repo}/languages"
        }
      ],
      "checked": {
        "from": "2026-10-08",
        "to": "2026-10-08"
      },
      "noRecordLabel": null,
      "coverage": {
        "base": 38977,
        "records": 38977,
        "declared": 18804,
        "undeclared": 5421,
        "undeclaredOurLimit": 0,
        "inapplicable": 14752,
        "noRecord": 0,
        "declaredPctOfApplicable": 77.6,
        "declaredPctOfBase": 48.2
      },
      "values": [
        {
          "value": "TypeScript",
          "count": 8333,
          "pct": 44.3
        },
        {
          "value": "Python",
          "count": 5007,
          "pct": 26.6
        },
        {
          "value": "JavaScript",
          "count": 3539,
          "pct": 18.8
        },
        {
          "value": "Go",
          "count": 529,
          "pct": 2.8
        },
        {
          "value": "Rust",
          "count": 443,
          "pct": 2.4
        },
        {
          "value": "HTML",
          "count": 262,
          "pct": 1.4
        },
        {
          "value": "C#",
          "count": 156,
          "pct": 0.8
        },
        {
          "value": "Shell",
          "count": 154,
          "pct": 0.8
        },
        {
          "value": "Dockerfile",
          "count": 88,
          "pct": 0.5
        },
        {
          "value": "Java",
          "count": 47,
          "pct": 0.2
        },
        {
          "value": "Swift",
          "count": 45,
          "pct": 0.2
        },
        {
          "value": "PHP",
          "count": 25,
          "pct": 0.1
        },
        {
          "value": "41 other languages",
          "count": 176,
          "pct": 0.9,
          "other": true
        }
      ],
      "undeclared": [
        {
          "label": "GitHub detects no source language (docs-only or empty repository)",
          "count": 5421,
          "pct": 100
        }
      ],
      "inapplicable": [
        {
          "label": "no readable GitHub repository (none linked, empty link, on GitLab, or not returned by GitHub)",
          "count": 14752,
          "pct": 100
        }
      ]
    },
    {
      "id": "capability",
      "title": "MCP capabilities",
      "validated": true,
      "multi": true,
      "question": "Which MCP features does the server advertise when we connect?",
      "method": "Read-only connection: initialize plus tools/list, resources/list and prompts/list — no tool is ever called. Remote servers over HTTP; npm/PyPI packages launched inside an E2B sandbox. A server can advertise several features, so rows add up to more than 100%.",
      "sources": [
        {
          "host": "the server itself",
          "what": "MCP initialize result and list responses"
        }
      ],
      "checked": {
        "from": "2026-10-08",
        "to": "2026-10-09"
      },
      "noRecordLabel": "no HTTP remote and no npm/PyPI package we can start",
      "extra": {
        "declaredViaRemote": 14123,
        "declaredViaPackage": 4766,
        "remoteAndPackageDisagree": 69
      },
      "coverage": {
        "base": 38977,
        "records": 31312,
        "declared": 18889,
        "undeclared": 12423,
        "undeclaredOurLimit": 23,
        "inapplicable": 0,
        "noRecord": 7665,
        "declaredPctOfApplicable": 60.3,
        "declaredPctOfBase": 48.5
      },
      "values": [
        {
          "value": "tools",
          "count": 18877,
          "pct": 99.9
        },
        {
          "value": "resources",
          "count": 6599,
          "pct": 34.9
        },
        {
          "value": "prompts",
          "count": 5489,
          "pct": 29.1
        },
        {
          "value": "experimental",
          "count": 1591,
          "pct": 8.4
        },
        {
          "value": "logging",
          "count": 1132,
          "pct": 6
        },
        {
          "value": "extensions",
          "count": 419,
          "pct": 2.2
        },
        {
          "value": "completions",
          "count": 179,
          "pct": 0.9
        },
        {
          "value": "tasks",
          "count": 63,
          "pct": 0.3
        },
        {
          "value": "(none advertised)",
          "count": 3,
          "pct": 0
        }
      ],
      "undeclared": [
        {
          "label": "could not connect or initialize (cause not determined; can be our launch environment)",
          "count": 6620,
          "pct": 53.3
        },
        {
          "label": "requires authentication before listing anything",
          "count": 3970,
          "pct": 32
        },
        {
          "label": "package not executable (no bin, shebang or entrypoint)",
          "count": 993,
          "pct": 8
        },
        {
          "label": "package crashes on a broken dependency",
          "count": 817,
          "pct": 6.6
        },
        {
          "label": "our limit: timed out",
          "count": 23,
          "pct": 0.2
        }
      ],
      "inapplicable": []
    },
    {
      "id": "depaudit",
      "title": "Known vulnerabilities in dependencies",
      "validated": true,
      "question": "What is the most severe published advisory anywhere in the resolved dependency tree of the listed version?",
      "method": "npm: the listed version’s tree resolved with npm install --package-lock-only --ignore-scripts, then npm audit. PyPI: tree resolved with uv pip compile --no-build (Python 3.12, Linux x86_64), then OSV.dev. Nothing from the package is executed.",
      "sources": [
        {
          "host": "registry.npmjs.org",
          "what": "npm audit advisory database"
        },
        {
          "host": "api.osv.dev",
          "what": "PyPI advisories (querybatch)"
        }
      ],
      "checked": {
        "from": "2026-10-08",
        "to": "2026-10-09"
      },
      "noRecordLabel": "not an npm or PyPI package",
      "extra": {
        "byEcosystem": {
          "npm": {
            "records": 10401,
            "declared": 10174,
            "values": [
              {
                "value": "critical",
                "count": 117,
                "pct": 1.1
              },
              {
                "value": "high",
                "count": 944,
                "pct": 9.3
              },
              {
                "value": "moderate",
                "count": 211,
                "pct": 2.1
              },
              {
                "value": "low",
                "count": 28,
                "pct": 0.3
              },
              {
                "value": "none-known",
                "count": 8874,
                "pct": 87.2
              }
            ]
          },
          "pypi": {
            "records": 4030,
            "declared": 3749,
            "values": [
              {
                "value": "critical",
                "count": 94,
                "pct": 2.5
              },
              {
                "value": "high",
                "count": 68,
                "pct": 1.8
              },
              {
                "value": "moderate",
                "count": 49,
                "pct": 1.3
              },
              {
                "value": "low",
                "count": 5,
                "pct": 0.1
              },
              {
                "value": "none-known",
                "count": 3533,
                "pct": 94.2
              }
            ]
          }
        }
      },
      "coverage": {
        "base": 38977,
        "records": 14431,
        "declared": 13923,
        "undeclared": 508,
        "undeclaredOurLimit": 324,
        "inapplicable": 0,
        "noRecord": 24546,
        "declaredPctOfApplicable": 96.5,
        "declaredPctOfBase": 35.7
      },
      "values": [
        {
          "value": "critical",
          "count": 211,
          "pct": 1.5
        },
        {
          "value": "high",
          "count": 1012,
          "pct": 7.3
        },
        {
          "value": "moderate",
          "count": 260,
          "pct": 1.9
        },
        {
          "value": "low",
          "count": 33,
          "pct": 0.2
        },
        {
          "value": "none-known",
          "count": 12407,
          "pct": 89.1
        }
      ],
      "undeclared": [
        {
          "label": "our limit: dependency tree could not be resolved safely",
          "count": 324,
          "pct": 63.8
        },
        {
          "label": "package or listed version not found upstream",
          "count": 179,
          "pct": 35.2
        },
        {
          "label": "listed version is not an exact version",
          "count": 5,
          "pct": 1
        }
      ],
      "inapplicable": []
    },
    {
      "id": "licenseClass",
      "title": "License class",
      "validated": true,
      "question": "Is the package’s declared license permissive, copyleft or something else?",
      "method": "The SPDX identifier declared on npm/PyPI, sorted into permissive (MIT, Apache-2.0, BSD, ISC, …) or copyleft (GPL family, MPL, EPL, EUPL, CDDL); “other” is a real identifier we don’t sort, not a claim about OSI status.",
      "sources": [
        {
          "host": "registry.npmjs.org",
          "what": "license"
        },
        {
          "host": "pypi.org",
          "what": "license, license_expression, classifiers"
        }
      ],
      "checked": {
        "from": "2026-10-06",
        "to": "2026-10-06"
      },
      "noRecordLabel": null,
      "coverage": {
        "base": 38977,
        "records": 38977,
        "declared": 13419,
        "undeclared": 1483,
        "undeclaredOurLimit": 2,
        "inapplicable": 24075,
        "noRecord": 0,
        "declaredPctOfApplicable": 90,
        "declaredPctOfBase": 34.4
      },
      "values": [
        {
          "value": "permissive",
          "count": 12368,
          "pct": 92.2
        },
        {
          "value": "other",
          "count": 756,
          "pct": 5.6
        },
        {
          "value": "copyleft",
          "count": 295,
          "pct": 2.2
        }
      ],
      "undeclared": [
        {
          "label": "license text present, not a usable SPDX identifier",
          "count": 481,
          "pct": 32.4
        },
        {
          "label": "declares no package",
          "count": 471,
          "pct": 31.8
        },
        {
          "label": "no license declared",
          "count": 377,
          "pct": 25.4
        },
        {
          "label": "package or listed version not found on npm/PyPI",
          "count": 152,
          "pct": 10.2
        },
        {
          "label": "our limit: package metadata unreachable",
          "count": 2,
          "pct": 0.1
        }
      ],
      "inapplicable": [
        {
          "label": "remote-only: ships no package",
          "count": 22396,
          "pct": 93
        },
        {
          "label": "package ecosystem not covered (oci, mcpb, cargo, nuget)",
          "count": 1679,
          "pct": 7
        }
      ]
    },
    {
      "id": "maintenanceStatus",
      "title": "Maintenance",
      "validated": true,
      "question": "How recently was the linked GitHub repository pushed to?",
      "method": "archived if GitHub marks it archived; otherwise active = a push within 90 days, slowing = 91–365 days, stale = over 365 days.",
      "sources": [
        {
          "host": "api.github.com",
          "what": "GET /repos/{owner}/{repo} → archived, pushed_at"
        }
      ],
      "checked": {
        "from": "2026-10-06",
        "to": "2026-10-06"
      },
      "noRecordLabel": null,
      "coverage": {
        "base": 38977,
        "records": 38977,
        "declared": 24256,
        "undeclared": 4487,
        "undeclaredOurLimit": 0,
        "inapplicable": 10234,
        "noRecord": 0,
        "declaredPctOfApplicable": 84.4,
        "declaredPctOfBase": 62.2
      },
      "values": [
        {
          "value": "active",
          "count": 20070,
          "pct": 82.7
        },
        {
          "value": "slowing",
          "count": 3752,
          "pct": 15.5
        },
        {
          "value": "archived",
          "count": 309,
          "pct": 1.3
        },
        {
          "value": "stale",
          "count": 125,
          "pct": 0.5
        }
      ],
      "undeclared": [
        {
          "label": "repository link is dead (HTTP 404)",
          "count": 4298,
          "pct": 95.8
        },
        {
          "label": "repository link empty or unreadable",
          "count": 189,
          "pct": 4.2
        }
      ],
      "inapplicable": [
        {
          "label": "no repository link",
          "count": 10187,
          "pct": 99.5
        },
        {
          "label": "repository on GitLab (not covered)",
          "count": 47,
          "pct": 0.5
        }
      ]
    },
    {
      "id": "environment",
      "title": "Where it runs",
      "validated": true,
      "question": "Does the server run on the vendor’s infrastructure, on your machine, or either?",
      "method": "From the registry entry: a remote endpoint means it runs on the vendor’s infrastructure; a package means it runs on your machine; both means either. This says where it runs, not what it can reach or control.",
      "sources": [
        {
          "host": "registry.modelcontextprotocol.io",
          "what": "remotes[], packages[]"
        }
      ],
      "checked": {
        "from": "2026-10-06",
        "to": "2026-10-06"
      },
      "noRecordLabel": null,
      "coverage": {
        "base": 38977,
        "records": 38977,
        "declared": 38506,
        "undeclared": 471,
        "undeclaredOurLimit": 0,
        "inapplicable": 0,
        "noRecord": 0,
        "declaredPctOfApplicable": 98.8,
        "declaredPctOfBase": 98.8
      },
      "values": [
        {
          "value": "vendor-infrastructure",
          "count": 22396,
          "pct": 58.2
        },
        {
          "value": "your-machine",
          "count": 14185,
          "pct": 36.8
        },
        {
          "value": "either",
          "count": 1925,
          "pct": 5
        }
      ],
      "undeclared": [
        {
          "label": "declares neither a package nor a remote",
          "count": 471,
          "pct": 100
        }
      ],
      "inapplicable": []
    }
  ],
  "generatedAt": "2026-10-09T19:15:23.803Z",
  "withheld": [],
  "showUnverified": true
}
