Catalog integrity

MCP does not invent component source. It copies published catalog files and stamps a header. Privacy, terms, cookies, and licence pages are not added to that tree — they arrive separately via get_site_profile. If a catalog file would leave our hands changed in any other way, delivery is refused.

What we check before a file is sent

  1. Allowlist. MCP may name component ids that exist in this registry, a project name, and a repo name. Unknown ids are rejected. Extra MCP fields are ignored.
  2. Source lock. Each component file is copied from the published catalog. After we strip our stamp the bytes must match the catalog SHA-256 below. If they do not, we do not return the build.
  3. Mutation allowlist. Catalog files may only gain a stamp header. INTEGRITY.json is generated, not cloned, and is listed as such. Dashboard legal copy is not part of this tree.
  4. No payload execution. We never eval MCP arguments. Subscriber licence and GDPR text is returned only through get_site_profile as document bodies, not spliced into catalog component source.

How you check a clone

  1. Open the public catalog at github.com/botkelp or copy a file from a component page here.
  2. SHA-256 the file. If it is generated output, strip the BotKelp header first (or paste it below — we strip it for you).
  3. Compare that digest to the table. A generated project also includes INTEGRITY.json with the same hashes and a pass/fail verdict from the delivery check.

Matching a hash means those bytes are the catalog we publish. It is not a security audit of the component’s dependencies or of code you add later.

Check a file

Published SHA-256

268 files in botkelp/components. Hashes are of the catalog bytes as published, before a per-delivery stamp.

angular-base

  • .browserslistrcsha256:ffe13f00011eb4ce…
  • .github/workflows/ci.ymlsha256:bec99743747d5ec7…
  • .gitignoresha256:bfc94fbd89511ff0…
  • angular.jsonsha256:68a23b55fe609f3f…
  • package.jsonsha256:c4f1b5e46594ca0e…
  • README.mdsha256:71c570d307e6f4b5…
  • src/app/app.component.csssha256:63ef24eafc87b68f…
  • src/app/app.component.htmlsha256:9377ed54151e472f…
  • src/app/app.component.tssha256:ba3bcad882c46346…
  • src/app/app.config.tssha256:2145070e12f83934…
  • src/app/app.routes.tssha256:9e994862a25f31af…
  • src/app/pages/about/about.page.csssha256:7b94b266d68474f6…
  • src/app/pages/about/about.page.htmlsha256:39b6e773a39e7b1c…
  • src/app/pages/about/about.page.tssha256:2bb061c83a8d7a50…
  • src/app/pages/home/home.page.csssha256:94b668cc4edd6a3c…
  • src/app/pages/home/home.page.htmlsha256:61e9b40a3775743d…
  • src/app/pages/home/home.page.tssha256:141b2c555e947e2e…
  • src/environments/environment.prod.tssha256:8c16f4222dfe8446…
  • src/environments/environment.tssha256:4a1326dae6974d42…
  • src/index.htmlsha256:dc43174658e8a086…
  • src/main.tssha256:d6abd407535bea38…
  • src/styles.csssha256:39550531eab023d6…
  • tsconfig.app.jsonsha256:5f4183f0947c9a41…
  • tsconfig.jsonsha256:e5b61755a2fb60f0…
  • tsconfig.spec.jsonsha256:7227c9fe52df4c9f…

gcp-hosting

  • .dockerignoresha256:70bcc2e98c95efe3…
  • Dockerfilesha256:3dfb3b1dcf232ec8…
  • GCP_README.mdsha256:16a44a30e7b1bfb2…

aws-hosting

  • .ebextensions/nextjs.configsha256:32e773ea88d15b48…
  • AWS_README.mdsha256:875b07efbd2d63f5…

django-base

  • .env.examplesha256:552a87cc6e36d0f0…
  • .github/workflows/ci.ymlsha256:11ee20aae1ab28df…
  • .gitignoresha256:637d70e8395dcf4b…
  • docker-compose.ymlsha256:504815aad9688908…
  • Dockerfilesha256:77e9e25f896848a5…
  • manage.pysha256:d8619d45b81b0817…
  • myapp/admin.pysha256:ba604c5b406bd8aa…
  • myapp/apps.pysha256:658a3e533bd59061…
  • myapp/models.pysha256:7c0e260f675456ad…
  • myapp/urls.pysha256:db418ca66fe45936…
  • myapp/views.pysha256:b9ad89a27edd3a4b…
  • myproject/asgi.pysha256:9e4906adc45dfc17…
  • myproject/settings.pysha256:2534e6efdeea59eb…
  • myproject/urls.pysha256:ed6eaf225e1fd068…
  • myproject/wsgi.pysha256:0a6e1de4b9ddfa62…
  • README.mdsha256:15b35ae305755f9e…
  • requirements-dev.txtsha256:581a962e6e88ffae…
  • requirements.txtsha256:8c15e6a87a457dea…

express

  • .env.examplesha256:2175edbf0d7a1e36…
  • .github/workflows/ci.ymlsha256:bec99743747d5ec7…
  • .gitignoresha256:1871816a1d48681f…
  • docker-compose.ymlsha256:882440b3dadad54f…
  • Dockerfilesha256:0bebda11d6d2db65…
  • package.jsonsha256:e45bbbb3ce21fe58…
  • README.mdsha256:a73655c0912322d1…
  • src/config/index.tssha256:1db85d4d80490e93…
  • src/middleware/errorHandler.tssha256:2545ae017f4afc5a…
  • src/middleware/requestLogger.tssha256:fac84738e175cd14…
  • src/routes/health.tssha256:f4136540993f2ea2…
  • src/routes/index.tssha256:15722a02b482ee05…
  • src/server.tssha256:768c78dffbb35fce…
  • tsconfig.jsonsha256:407d0f59f95e1afb…

fastapi-base

  • .env.examplesha256:c55ef498d1a09e87…
  • .github/workflows/ci.ymlsha256:48d3be0917b43907…
  • .gitignoresha256:ef7421cbc5d18ddc…
  • app/__init__.pysha256:497958c0643b1683…
  • app/api/__init__.pysha256:b82afa893ac24b3e…
  • app/api/v1/__init__.pysha256:f3cac53c58864122…
  • app/api/v1/endpoints/__init__.pysha256:35cf3de85252560f…
  • app/api/v1/endpoints/examples.pysha256:63407529c95b2162…
  • app/api/v1/endpoints/health.pysha256:daf575087e936b62…
  • app/core/__init__.pysha256:a433e1a3fbecac50…
  • app/core/config.pysha256:50748b94c2461b99…
  • app/core/security.pysha256:1947c2901de7b93f…
  • app/models/__init__.pysha256:d181a9d0e02aa91a…
  • app/models/base.pysha256:6e3f58858b01c9d8…
  • app/models/example.pysha256:77bfa93c28a027d0…
  • app/routers/__init__.pysha256:62723fe9c5f5ed71…
  • app/routers/v1.pysha256:bcff95e20f5603e3…
  • docker-compose.ymlsha256:c99e728c0179ebe7…
  • Dockerfilesha256:d8c27d2193f92257…
  • main.pysha256:4c8cb01b28d33713…
  • README.mdsha256:9304648f5e12220b…
  • requirements-dev.txtsha256:02569dee4df051f2…
  • requirements.txtsha256:f85629885750d092…

laravel-base

  • .env.examplesha256:4be8ba2c103a2b29…
  • .github/workflows/ci.ymlsha256:e029d36133798d27…
  • .gitignoresha256:1c11bd3e89e331ce…
  • app/Http/Controllers/Controller.phpsha256:493645e3da73e34e…
  • app/Http/Controllers/ExampleController.phpsha256:fd92ca474e035c7a…
  • app/Models/Example.phpsha256:b10e245444b7f17d…
  • app/Providers/AppServiceProvider.phpsha256:a149a0f3e22a9d90…
  • app/Providers/RouteServiceProvider.phpsha256:56194ec744eed969…
  • artisansha256:da7d4fbf0a74d751…
  • bootstrap/app.phpsha256:b6cab66cf1312e8e…
  • bootstrap/providers.phpsha256:06a15033f811d60f…
  • composer.jsonsha256:0961ca49a4378239…
  • config/app.phpsha256:25bf5864c1859eef…
  • config/cors.phpsha256:37b4f9b2c0782f1f…
  • config/database.phpsha256:1ca47c6c3ddfb4d3…
  • database/migrations/2024_01_01_000000_create_examples_table.phpsha256:541e5c25b06aca0e…
  • docker-compose.ymlsha256:5450209041802999…
  • Dockerfilesha256:af6beebdd2750766…
  • public/index.phpsha256:bfce6ea8c5d0d567…
  • README.mdsha256:9b5622eb553166cb…
  • routes/api.phpsha256:28455c210440688c…
  • routes/web.phpsha256:f584da221bf00295…

mongodb

  • .env.examplesha256:d201ffa896b3432f…
  • docker-compose.ymlsha256:463a89fc97473a1c…
  • lib/mongodb.tssha256:cec91ef3bbf2e0f4…

mysql

  • .env.examplesha256:9d4f3daf3fb8f68a…
  • docker-compose.ymlsha256:0fe44c0bf6bbc3eb…
  • prisma/schema.prismasha256:26f05b3b6f61aa13…

nestjs

  • .env.examplesha256:c7fa8c5f826306bd…
  • .eslintrc.jsonsha256:6b57c7814439471e…
  • .github/workflows/ci.ymlsha256:bec99743747d5ec7…
  • .gitignoresha256:36e3bfba21da66a2…
  • .prettierrcsha256:5b30fccf6684e784…
  • docker-compose.ymlsha256:9728fdc70c770745…
  • Dockerfilesha256:a4b1c6c34ae04e33…
  • nest-cli.jsonsha256:bcb15e3049ff5d13…
  • package.jsonsha256:380b907e3479d0bf…
  • README.mdsha256:4f42bd796e96a9f0…
  • src/app.controller.tssha256:6d2a351b3694ef93…
  • src/app.module.tssha256:43bed2d85b989a50…
  • src/app.service.tssha256:dd39ec0e3d1dafd5…
  • src/common/filter/http-exception.filter.tssha256:495cf39eb6b95c84…
  • src/config/configuration.tssha256:233983c22b3b8cd4…
  • src/main.tssha256:b19283b7404158b6…
  • tsconfig.build.jsonsha256:2ca03b87cd248de9…
  • tsconfig.jsonsha256:6602b5da66aafde8…

postgres

  • .env.examplesha256:e3b7463e4e10967e…
  • docker-compose.ymlsha256:754f92e815e73f9d…

sqlite

  • .env.examplesha256:cb57c42a21834b69…
  • prisma/schema.prismasha256:53829e38403d1018…

sqlserver

  • .env.examplesha256:47835768b6b4d017…
  • docker-compose.ymlsha256:dfb6eb2bcf9da393…

svelte-base

  • .env.examplesha256:41d57ced0bafb48d…
  • .github/workflows/ci.ymlsha256:bec99743747d5ec7…
  • .gitignoresha256:d1c3be014e62262f…
  • package.jsonsha256:584f39035f56987c…
  • README.mdsha256:3c16b7a393d747ed…
  • src/app.csssha256:bab4ba3d87c4dbb4…
  • src/app.htmlsha256:56d8fd2f5cca0482…
  • src/lib/counter.tssha256:69015794577eb7ad…
  • src/routes/+layout.sveltesha256:442701db4cd8e9ad…
  • src/routes/+page.sveltesha256:bcdd0720e1cfe712…
  • svelte.config.jssha256:1ea0ba9ca9c963f9…
  • tsconfig.jsonsha256:0374d911148fdc6c…
  • vite.config.tssha256:182457098fa1b812…

vue-base

  • .env.examplesha256:053c867e9a97ec12…
  • .eslintrc.cjssha256:80863e69716c33b6…
  • .github/workflows/ci.ymlsha256:bec99743747d5ec7…
  • .gitignoresha256:5bf41e52993e5dd4…
  • .prettierrcsha256:ebe733191f06a29f…
  • docker-compose.ymlsha256:10f290adeb344578…
  • Dockerfilesha256:c97c5f4dcefee5fa…
  • index.htmlsha256:6f23ee2f6e6fa9bb…
  • package.jsonsha256:64367688aa45289b…
  • README.mdsha256:b462119bfdb5af64…
  • src/App.vuesha256:9756fe0dc2c0a438…
  • src/assets/main.csssha256:c0d861fb34d3759c…
  • src/main.tssha256:e38fa2f754383bbf…
  • src/router/index.tssha256:f17a73f5a5cd152e…
  • src/stores/counter.tssha256:2e33c547737fa7da…
  • src/stores/index.tssha256:280d5aa5a16c758a…
  • src/style.csssha256:7cddc9ca08816eb4…
  • src/views/About/AboutView.vuesha256:d43dd032ed0fbd7e…
  • src/views/Home/HomeView.vuesha256:e61b5c24f8e75d46…
  • tsconfig.app.jsonsha256:501fa841a51a59e0…
  • tsconfig.jsonsha256:ff24ce972fa296d3…
  • tsconfig.node.jsonsha256:6400ce6666b26b3b…
  • vite.config.tssha256:99e813b470ee600e…
  • vitest.config.tssha256:4808ce3e159e6109…

aspnet-base

  • .github/workflows/ci.ymlsha256:e4be3118a9faa8cb…
  • .gitignoresha256:2af8ed94ac191b02…
  • appsettings.Development.jsonsha256:bad466e2d0ba0d69…
  • appsettings.jsonsha256:f01fe30cf1534ae0…
  • AspNetCoreApp.csprojsha256:ccdbb57cd33ee01f…
  • Controllers/ExampleController.cssha256:efd788441b275872…
  • docker-compose.ymlsha256:08b27169345f64e6…
  • Dockerfilesha256:56f41dd3e21174d1…
  • Models/AppDbContext.cssha256:b3c056d2ca5a80d5…
  • Models/Example.cssha256:6d3c552f3a5f02f8…
  • Program.cssha256:caf3ff283569d69f…
  • Properties/launchSettings.jsonsha256:ed35d8dd34bf5e4e…
  • README.mdsha256:26c27dc5d0d76460…

nextjs-base

  • .github/workflows/ci.ymlsha256:004ec773dfa8d7e6…
  • .gitignoresha256:219d43fa77cc15c2…
  • app/globals.csssha256:e8d027de5eeb93f9…
  • app/layout.tsxsha256:0d97be4db75ed16c…
  • app/page.tsxsha256:37d12fbd43ddffce…
  • eslint.config.mjssha256:5c697206f302dadc…
  • next-env.d.tssha256:1862ac4bbbc5192d…
  • next.config.tssha256:37f03c5a1d2e853e…
  • package.jsonsha256:57c04bccbd088194…
  • README.mdsha256:fd90ab3510807be5…
  • tsconfig.jsonsha256:8d3cfecc924ff54c…

prettier-eslint-config

  • .prettierignoresha256:9f8db0ef469e5891…
  • .prettierrc.jsonsha256:ebe733191f06a29f…
  • eslint.config.mjssha256:5c2ffb5ca11bd7c3…

railway-hosting

  • .railwayignoresha256:7ac6b11df0fe2509…
  • RAILWAY_README.mdsha256:f253a571c5dd828c…
  • railway.tomlsha256:0e74aca6c64152fa…

render-hosting

  • .renderignoresha256:97ff1962033fef05…
  • RENDER_README.mdsha256:6958b3ddeb66f507…
  • render.yamlsha256:0342eac4f1671180…

cloudflare-hosting

  • .wranglerignoresha256:28734e3ce2a11e74…
  • CLOUDFLARE_README.mdsha256:6bddfee1827e57a5…
  • wrangler.tomlsha256:2aff5aa735324a53…

admin-dashboard-core

  • app/admin/layout.tsxsha256:40af5fcab0496fc6…
  • app/admin/page.tsxsha256:6d35c875d9ca10fe…
  • app/admin/settings/page.tsxsha256:45cdf8fcf3de4437…
  • lib/admin-config.tssha256:01ad2c5f0fb1c424…

authjs

  • app/api/auth/[...nextauth]/route.tssha256:23ed938053fb9656…
  • app/login/page.tsxsha256:ef7ac9e42f3a4f4f…
  • auth.tssha256:f7a3a3e28c0f4163…
  • proxy.tssha256:781701636e5c4592…

paddle

  • app/api/checkout/paddle/route.tssha256:337729ee842528df…
  • app/api/webhooks/paddle/route.tssha256:f2aff11b038db802…
  • components/paddle-checkout-button.tsxsha256:4d6657394226a890…
  • lib/paddle.tssha256:19c2f74cce1c3985…

stripe

  • app/api/checkout/route.tssha256:08e04717426192d9…
  • app/api/webhooks/stripe/route.tssha256:cc0416bc82eddcbf…
  • components/checkout-button.tsxsha256:fdf8340498ab11f4…
  • lib/stripe.tssha256:9f74eba1c2070bbb…

clerk

  • app/api/webhooks/clerk/route.tssha256:339d39cdb4d9e25d…
  • app/sign-in/[[...sign-in]]/page.tsxsha256:eade6b11cbc5c3d0…
  • app/sign-up/[[...sign-up]]/page.tsxsha256:cd0d59a7e3924a3e…
  • providers.tsxsha256:32f593ed38a24fa7…
  • proxy.tssha256:d15f0350783056df…

supabase-auth-ui

  • app/auth/callback/route.tssha256:b7d8f41bc3f4e95c…
  • app/login/page.tsxsha256:e7fe10fcd959a1e4…

tailwind

  • app/globals.csssha256:5b7f520cdb6d9ae6…
  • postcss.config.mjssha256:9ca55411b62b2c9c…

auth0

  • app/login/page.tsxsha256:309d192f16ecdfa2…
  • lib/auth0.tssha256:cf204e57e1b3b94c…
  • proxy.tssha256:929e7aa2d2b10e69…

azure-hosting

  • AZURE_README.mdsha256:f94d06301ce742f8…

aos

  • components/aos-init.tsxsha256:2ca584e2ad429186…
  • lib/aos.tssha256:46921f22e842e745…
  • types/aos.d.tssha256:ac7e6a75f7d06f4b…

footer

  • components/footer.tsxsha256:a35989542cf1f93a…

navbar

  • components/navbar.tsxsha256:0119fc4aa8be0746…

paypal

  • components/paypal-buttons.tsxsha256:46483cf47eee8934…
  • components/paypal-provider.tsxsha256:cba8f76b0b331767…
  • lib/paypal/client.tssha256:2555b449b45921c9…

recaptcha

  • components/recaptcha-script.tsxsha256:a6c2b1957a8f8757…
  • components/recaptcha-widget.tsxsha256:700cbe52437b204e…

supabase-client

  • components/supabase-provider.tsxsha256:e4f62b93da23a92d…
  • lib/supabase/client.tssha256:0de5a242433e2a71…
  • lib/supabase/server.tssha256:eba830270332434f…

swiper

  • components/swiper-slider.tsxsha256:9ca6dbb5b696bc52…
  • lib/swiper.tssha256:d9dea30a9c881fc3…

shadcn-ui

  • components/ui/button.tsxsha256:a754057f531b691a…
  • components/ui/card.tsxsha256:d2b4f64d5718e90f…
  • lib/utils.tssha256:d6cf1d2c25e92eba…

braintree

  • lib/braintree/client.tssha256:57be8c4005f16402…
  • lib/braintree/hosted-fields.tssha256:17a0d5def5cee2b1…
  • types/braintree-web.d.tssha256:2aa9a111b4dcf610…

core-js

  • lib/core-js.tssha256:df2140f2187325bb…

day-js

  • lib/dayjs.tssha256:5143e6361ea414dd…
  • types/dayjs.d.tssha256:a1fbd09596c1961e…

firebase

  • lib/firebase.tssha256:977b8bbeeeeeacaa…

jquery

  • lib/jquery.tssha256:7973dede67e672b0…

prisma

  • lib/prisma.tssha256:612ecc5a5cf2a5d0…
  • prisma.config.tssha256:77a6b2aac97b7001…
  • prisma/schema.prismasha256:b6edf01b2cd8c5f3…