@frontmcp/skills 1.0.0-beta.13 → 1.0.0-beta.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (258) hide show
  1. package/catalog/TEMPLATE.md +55 -0
  2. package/catalog/frontmcp-config/SKILL.md +2 -2
  3. package/catalog/frontmcp-config/examples/configure-auth/multi-app-auth.md +87 -0
  4. package/catalog/frontmcp-config/examples/configure-auth/public-mode-setup.md +63 -0
  5. package/catalog/frontmcp-config/examples/configure-auth/remote-oauth-with-vault.md +76 -0
  6. package/catalog/frontmcp-config/examples/configure-auth-modes/local-self-signed-tokens.md +77 -0
  7. package/catalog/frontmcp-config/examples/configure-auth-modes/remote-enterprise-oauth.md +73 -0
  8. package/catalog/frontmcp-config/examples/configure-auth-modes/transparent-jwt-validation.md +64 -0
  9. package/catalog/frontmcp-config/examples/configure-elicitation/basic-confirmation-gate.md +83 -0
  10. package/catalog/frontmcp-config/examples/configure-elicitation/distributed-elicitation-redis.md +87 -0
  11. package/catalog/frontmcp-config/examples/configure-http/cors-restricted-origins.md +52 -0
  12. package/catalog/frontmcp-config/examples/configure-http/entry-path-reverse-proxy.md +72 -0
  13. package/catalog/frontmcp-config/examples/configure-http/unix-socket-local.md +64 -0
  14. package/catalog/frontmcp-config/examples/configure-session/multi-server-key-prefix.md +68 -0
  15. package/catalog/frontmcp-config/examples/configure-session/redis-session-store.md +52 -0
  16. package/catalog/frontmcp-config/examples/configure-session/vercel-kv-session.md +52 -0
  17. package/catalog/frontmcp-config/examples/configure-throttle/distributed-redis-throttle.md +94 -0
  18. package/catalog/frontmcp-config/examples/configure-throttle/per-tool-rate-limit.md +92 -0
  19. package/catalog/frontmcp-config/examples/configure-throttle/server-level-rate-limit.md +83 -0
  20. package/catalog/frontmcp-config/examples/configure-throttle-guard-config/full-guard-config.md +99 -0
  21. package/catalog/frontmcp-config/examples/configure-throttle-guard-config/minimal-guard-config.md +55 -0
  22. package/catalog/frontmcp-config/examples/configure-transport/custom-protocol-flags.md +74 -0
  23. package/catalog/frontmcp-config/examples/configure-transport/distributed-sessions-redis.md +86 -0
  24. package/catalog/frontmcp-config/examples/configure-transport/stateless-serverless.md +69 -0
  25. package/catalog/frontmcp-config/examples/configure-transport-protocol-presets/legacy-preset-nodejs.md +65 -0
  26. package/catalog/frontmcp-config/examples/configure-transport-protocol-presets/stateless-api-serverless.md +69 -0
  27. package/catalog/frontmcp-config/references/configure-auth-modes.md +10 -0
  28. package/catalog/frontmcp-config/references/configure-auth.md +10 -0
  29. package/catalog/frontmcp-config/references/configure-elicitation.md +9 -0
  30. package/catalog/frontmcp-config/references/configure-http.md +10 -0
  31. package/catalog/frontmcp-config/references/configure-session.md +10 -0
  32. package/catalog/frontmcp-config/references/configure-throttle-guard-config.md +9 -0
  33. package/catalog/frontmcp-config/references/configure-throttle.md +10 -0
  34. package/catalog/frontmcp-config/references/configure-transport-protocol-presets.md +9 -0
  35. package/catalog/frontmcp-config/references/configure-transport.md +10 -0
  36. package/catalog/frontmcp-config/references/setup-redis.md +5 -0
  37. package/catalog/frontmcp-config/references/setup-sqlite.md +5 -0
  38. package/catalog/frontmcp-deployment/SKILL.md +2 -2
  39. package/catalog/frontmcp-deployment/examples/build-for-browser/browser-build-with-custom-entry.md +43 -0
  40. package/catalog/frontmcp-deployment/examples/build-for-browser/browser-crypto-and-storage.md +85 -0
  41. package/catalog/frontmcp-deployment/examples/build-for-browser/react-provider-setup.md +61 -0
  42. package/catalog/frontmcp-deployment/examples/build-for-cli/cli-binary-build.md +66 -0
  43. package/catalog/frontmcp-deployment/examples/build-for-cli/unix-socket-daemon.md +76 -0
  44. package/catalog/frontmcp-deployment/examples/build-for-sdk/connect-openai.md +78 -0
  45. package/catalog/frontmcp-deployment/examples/build-for-sdk/create-flat-config.md +85 -0
  46. package/catalog/frontmcp-deployment/examples/build-for-sdk/multi-platform-connect.md +104 -0
  47. package/catalog/frontmcp-deployment/examples/deploy-to-cloudflare/basic-worker-deploy.md +82 -0
  48. package/catalog/frontmcp-deployment/examples/deploy-to-cloudflare/worker-custom-domain.md +97 -0
  49. package/catalog/frontmcp-deployment/examples/deploy-to-cloudflare/worker-with-kv-storage.md +92 -0
  50. package/catalog/frontmcp-deployment/examples/deploy-to-lambda/cdk-deployment.md +92 -0
  51. package/catalog/frontmcp-deployment/examples/deploy-to-lambda/lambda-handler-with-cors.md +113 -0
  52. package/catalog/frontmcp-deployment/examples/deploy-to-lambda/sam-template-basic.md +100 -0
  53. package/catalog/frontmcp-deployment/examples/deploy-to-node/docker-compose-with-redis.md +101 -0
  54. package/catalog/frontmcp-deployment/examples/deploy-to-node/pm2-with-nginx.md +79 -0
  55. package/catalog/frontmcp-deployment/examples/deploy-to-node/resource-limits.md +92 -0
  56. package/catalog/frontmcp-deployment/examples/deploy-to-node-dockerfile/basic-multistage-dockerfile.md +63 -0
  57. package/catalog/frontmcp-deployment/examples/deploy-to-node-dockerfile/secure-nonroot-dockerfile.md +89 -0
  58. package/catalog/frontmcp-deployment/examples/deploy-to-vercel/vercel-mcp-endpoint-test.md +69 -0
  59. package/catalog/frontmcp-deployment/examples/deploy-to-vercel/vercel-with-kv.md +82 -0
  60. package/catalog/frontmcp-deployment/examples/deploy-to-vercel/vercel-with-skills-cache.md +90 -0
  61. package/catalog/frontmcp-deployment/examples/deploy-to-vercel-config/minimal-vercel-config.md +49 -0
  62. package/catalog/frontmcp-deployment/examples/deploy-to-vercel-config/vercel-config-with-security-headers.md +92 -0
  63. package/catalog/frontmcp-deployment/references/build-for-browser.md +10 -0
  64. package/catalog/frontmcp-deployment/references/build-for-cli.md +9 -0
  65. package/catalog/frontmcp-deployment/references/build-for-sdk.md +10 -0
  66. package/catalog/frontmcp-deployment/references/deploy-to-cloudflare.md +10 -0
  67. package/catalog/frontmcp-deployment/references/deploy-to-lambda.md +10 -0
  68. package/catalog/frontmcp-deployment/references/deploy-to-node-dockerfile.md +9 -0
  69. package/catalog/frontmcp-deployment/references/deploy-to-node.md +10 -0
  70. package/catalog/frontmcp-deployment/references/deploy-to-vercel-config.md +9 -0
  71. package/catalog/frontmcp-deployment/references/deploy-to-vercel.md +10 -0
  72. package/catalog/frontmcp-development/SKILL.md +2 -2
  73. package/catalog/frontmcp-development/examples/create-adapter/basic-api-adapter.md +92 -0
  74. package/catalog/frontmcp-development/examples/create-adapter/namespaced-adapter.md +124 -0
  75. package/catalog/frontmcp-development/examples/create-agent/basic-agent-with-tools.md +121 -0
  76. package/catalog/frontmcp-development/examples/create-agent/custom-multi-pass-agent.md +95 -0
  77. package/catalog/frontmcp-development/examples/create-agent/nested-agents-with-swarm.md +111 -0
  78. package/catalog/frontmcp-development/examples/create-agent-llm-config/anthropic-config.md +81 -0
  79. package/catalog/frontmcp-development/examples/create-agent-llm-config/openai-config.md +80 -0
  80. package/catalog/frontmcp-development/examples/create-job/basic-report-job.md +87 -0
  81. package/catalog/frontmcp-development/examples/create-job/job-with-permissions.md +117 -0
  82. package/catalog/frontmcp-development/examples/create-job/job-with-retry.md +88 -0
  83. package/catalog/frontmcp-development/examples/create-plugin/basic-plugin-with-provider.md +69 -0
  84. package/catalog/frontmcp-development/examples/create-plugin/configurable-dynamic-plugin.md +178 -0
  85. package/catalog/frontmcp-development/examples/create-plugin/plugin-with-context-extension.md +107 -0
  86. package/catalog/frontmcp-development/examples/create-plugin-hooks/basic-logging-plugin.md +69 -0
  87. package/catalog/frontmcp-development/examples/create-plugin-hooks/caching-with-around.md +80 -0
  88. package/catalog/frontmcp-development/examples/create-plugin-hooks/tool-level-hooks-and-stage-replacement.md +100 -0
  89. package/catalog/frontmcp-development/examples/create-prompt/basic-prompt.md +72 -0
  90. package/catalog/frontmcp-development/examples/create-prompt/dynamic-rag-prompt.md +92 -0
  91. package/catalog/frontmcp-development/examples/create-prompt/multi-turn-debug-session.md +86 -0
  92. package/catalog/frontmcp-development/examples/create-provider/basic-database-provider.md +113 -0
  93. package/catalog/frontmcp-development/examples/create-provider/config-and-api-providers.md +107 -0
  94. package/catalog/frontmcp-development/examples/create-resource/basic-static-resource.md +72 -0
  95. package/catalog/frontmcp-development/examples/create-resource/binary-and-multi-content.md +111 -0
  96. package/catalog/frontmcp-development/examples/create-resource/parameterized-template.md +84 -0
  97. package/catalog/frontmcp-development/examples/create-skill/basic-inline-skill.md +96 -0
  98. package/catalog/frontmcp-development/examples/create-skill/directory-based-skill.md +115 -0
  99. package/catalog/frontmcp-development/examples/create-skill/parameterized-skill.md +96 -0
  100. package/catalog/frontmcp-development/examples/create-skill-with-tools/basic-tool-orchestration.md +76 -0
  101. package/catalog/frontmcp-development/examples/create-skill-with-tools/directory-skill-with-tools.md +149 -0
  102. package/catalog/frontmcp-development/examples/create-skill-with-tools/incident-response-skill.md +92 -0
  103. package/catalog/frontmcp-development/examples/create-tool/basic-class-tool.md +62 -0
  104. package/catalog/frontmcp-development/examples/create-tool/tool-with-di-and-errors.md +84 -0
  105. package/catalog/frontmcp-development/examples/create-tool/tool-with-rate-limiting-and-progress.md +93 -0
  106. package/catalog/frontmcp-development/examples/create-tool-annotations/destructive-delete-tool.md +94 -0
  107. package/catalog/frontmcp-development/examples/create-tool-annotations/readonly-query-tool.md +60 -0
  108. package/catalog/frontmcp-development/examples/create-tool-output-schema-types/primitive-and-media-outputs.md +104 -0
  109. package/catalog/frontmcp-development/examples/create-tool-output-schema-types/zod-raw-shape-output.md +63 -0
  110. package/catalog/frontmcp-development/examples/create-tool-output-schema-types/zod-schema-advanced-output.md +103 -0
  111. package/catalog/frontmcp-development/examples/create-workflow/basic-deploy-pipeline.md +91 -0
  112. package/catalog/frontmcp-development/examples/create-workflow/parallel-validation-pipeline.md +90 -0
  113. package/catalog/frontmcp-development/examples/create-workflow/webhook-triggered-workflow.md +136 -0
  114. package/catalog/frontmcp-development/examples/decorators-guide/agent-skill-job-workflow.md +145 -0
  115. package/catalog/frontmcp-development/examples/decorators-guide/basic-server-with-app-and-tools.md +124 -0
  116. package/catalog/frontmcp-development/examples/decorators-guide/multi-app-with-plugins-and-providers.md +149 -0
  117. package/catalog/frontmcp-development/examples/official-adapters/authenticated-adapter-with-polling.md +84 -0
  118. package/catalog/frontmcp-development/examples/official-adapters/basic-openapi-adapter.md +54 -0
  119. package/catalog/frontmcp-development/examples/official-adapters/multi-api-hub-with-inline-spec.md +130 -0
  120. package/catalog/frontmcp-development/examples/official-plugins/cache-and-feature-flags.md +117 -0
  121. package/catalog/frontmcp-development/examples/official-plugins/production-multi-plugin-setup.md +147 -0
  122. package/catalog/frontmcp-development/examples/official-plugins/remember-plugin-session-memory.md +104 -0
  123. package/catalog/frontmcp-development/references/create-adapter.md +9 -0
  124. package/catalog/frontmcp-development/references/create-agent-llm-config.md +9 -0
  125. package/catalog/frontmcp-development/references/create-agent.md +10 -0
  126. package/catalog/frontmcp-development/references/create-job.md +10 -0
  127. package/catalog/frontmcp-development/references/create-plugin-hooks.md +10 -0
  128. package/catalog/frontmcp-development/references/create-plugin.md +10 -0
  129. package/catalog/frontmcp-development/references/create-prompt.md +10 -0
  130. package/catalog/frontmcp-development/references/create-provider.md +9 -0
  131. package/catalog/frontmcp-development/references/create-resource.md +52 -15
  132. package/catalog/frontmcp-development/references/create-skill-with-tools.md +10 -0
  133. package/catalog/frontmcp-development/references/create-skill.md +10 -0
  134. package/catalog/frontmcp-development/references/create-tool-annotations.md +9 -0
  135. package/catalog/frontmcp-development/references/create-tool-output-schema-types.md +10 -0
  136. package/catalog/frontmcp-development/references/create-tool.md +10 -0
  137. package/catalog/frontmcp-development/references/create-workflow.md +10 -0
  138. package/catalog/frontmcp-development/references/decorators-guide.md +10 -0
  139. package/catalog/frontmcp-development/references/official-adapters.md +10 -0
  140. package/catalog/frontmcp-development/references/official-plugins.md +10 -0
  141. package/catalog/frontmcp-extensibility/SKILL.md +1 -1
  142. package/catalog/frontmcp-extensibility/examples/vectoriadb/product-catalog-search.md +175 -0
  143. package/catalog/frontmcp-extensibility/examples/vectoriadb/semantic-search-with-persistence.md +138 -0
  144. package/catalog/frontmcp-extensibility/examples/vectoriadb/tfidf-keyword-search.md +103 -0
  145. package/catalog/frontmcp-extensibility/references/vectoriadb.md +10 -0
  146. package/catalog/frontmcp-guides/SKILL.md +2 -2
  147. package/catalog/frontmcp-guides/examples/example-knowledge-base/agent-and-plugin.md +160 -0
  148. package/catalog/frontmcp-guides/examples/example-knowledge-base/multi-app-composition.md +92 -0
  149. package/catalog/frontmcp-guides/examples/example-knowledge-base/vector-search-and-resources.md +135 -0
  150. package/catalog/frontmcp-guides/examples/example-task-manager/auth-and-crud-tools.md +135 -0
  151. package/catalog/frontmcp-guides/examples/example-task-manager/authenticated-e2e-tests.md +148 -0
  152. package/catalog/frontmcp-guides/examples/example-task-manager/redis-provider-with-di.md +129 -0
  153. package/catalog/frontmcp-guides/examples/example-weather-api/server-and-app-setup.md +75 -0
  154. package/catalog/frontmcp-guides/examples/example-weather-api/unit-and-e2e-tests.md +142 -0
  155. package/catalog/frontmcp-guides/examples/example-weather-api/weather-tool-with-schemas.md +74 -0
  156. package/catalog/frontmcp-guides/references/example-knowledge-base.md +10 -0
  157. package/catalog/frontmcp-guides/references/example-task-manager.md +10 -0
  158. package/catalog/frontmcp-guides/references/example-weather-api.md +10 -0
  159. package/catalog/frontmcp-production-readiness/SKILL.md +2 -2
  160. package/catalog/frontmcp-production-readiness/examples/common-checklist/caching-and-performance.md +102 -0
  161. package/catalog/frontmcp-production-readiness/examples/common-checklist/observability-setup.md +104 -0
  162. package/catalog/frontmcp-production-readiness/examples/common-checklist/security-hardening.md +95 -0
  163. package/catalog/frontmcp-production-readiness/examples/production-browser/browser-bundle-config.md +93 -0
  164. package/catalog/frontmcp-production-readiness/examples/production-browser/cross-platform-crypto.md +116 -0
  165. package/catalog/frontmcp-production-readiness/examples/production-browser/security-and-performance.md +128 -0
  166. package/catalog/frontmcp-production-readiness/examples/production-cli-binary/binary-build-config.md +109 -0
  167. package/catalog/frontmcp-production-readiness/examples/production-cli-binary/stdio-transport-error-handling.md +132 -0
  168. package/catalog/frontmcp-production-readiness/examples/production-cli-daemon/daemon-socket-config.md +82 -0
  169. package/catalog/frontmcp-production-readiness/examples/production-cli-daemon/graceful-shutdown-cleanup.md +107 -0
  170. package/catalog/frontmcp-production-readiness/examples/production-cli-daemon/security-and-permissions.md +119 -0
  171. package/catalog/frontmcp-production-readiness/examples/production-cloudflare/durable-objects-state.md +124 -0
  172. package/catalog/frontmcp-production-readiness/examples/production-cloudflare/workers-runtime-constraints.md +103 -0
  173. package/catalog/frontmcp-production-readiness/examples/production-cloudflare/wrangler-config.md +89 -0
  174. package/catalog/frontmcp-production-readiness/examples/production-lambda/cold-start-connection-reuse.md +122 -0
  175. package/catalog/frontmcp-production-readiness/examples/production-lambda/sam-template.md +107 -0
  176. package/catalog/frontmcp-production-readiness/examples/production-lambda/scaling-and-monitoring.md +138 -0
  177. package/catalog/frontmcp-production-readiness/examples/production-node-sdk/basic-sdk-lifecycle.md +85 -0
  178. package/catalog/frontmcp-production-readiness/examples/production-node-sdk/multi-instance-cleanup.md +110 -0
  179. package/catalog/frontmcp-production-readiness/examples/production-node-sdk/package-json-config.md +107 -0
  180. package/catalog/frontmcp-production-readiness/examples/production-node-server/docker-multi-stage.md +103 -0
  181. package/catalog/frontmcp-production-readiness/examples/production-node-server/graceful-shutdown.md +87 -0
  182. package/catalog/frontmcp-production-readiness/examples/production-node-server/redis-session-scaling.md +97 -0
  183. package/catalog/frontmcp-production-readiness/examples/production-vercel/cold-start-optimization.md +104 -0
  184. package/catalog/frontmcp-production-readiness/examples/production-vercel/stateless-serverless-design.md +91 -0
  185. package/catalog/frontmcp-production-readiness/examples/production-vercel/vercel-edge-config.md +78 -0
  186. package/catalog/frontmcp-production-readiness/references/common-checklist.md +10 -0
  187. package/catalog/frontmcp-production-readiness/references/production-browser.md +10 -0
  188. package/catalog/frontmcp-production-readiness/references/production-cli-binary.md +9 -0
  189. package/catalog/frontmcp-production-readiness/references/production-cli-daemon.md +10 -0
  190. package/catalog/frontmcp-production-readiness/references/production-cloudflare.md +10 -0
  191. package/catalog/frontmcp-production-readiness/references/production-lambda.md +10 -0
  192. package/catalog/frontmcp-production-readiness/references/production-node-sdk.md +10 -0
  193. package/catalog/frontmcp-production-readiness/references/production-node-server.md +10 -0
  194. package/catalog/frontmcp-production-readiness/references/production-vercel.md +10 -0
  195. package/catalog/frontmcp-setup/examples/frontmcp-skills-usage/bundle-presets-scaffolding.md +61 -0
  196. package/catalog/frontmcp-setup/examples/frontmcp-skills-usage/install-and-search-skills.md +83 -0
  197. package/catalog/frontmcp-setup/examples/multi-app-composition/local-apps-with-shared-tools.md +87 -0
  198. package/catalog/frontmcp-setup/examples/multi-app-composition/per-app-auth-and-isolation.md +88 -0
  199. package/catalog/frontmcp-setup/examples/multi-app-composition/remote-and-esm-apps.md +81 -0
  200. package/catalog/frontmcp-setup/examples/nx-workflow/build-test-affected.md +77 -0
  201. package/catalog/frontmcp-setup/examples/nx-workflow/multi-server-deployment.md +93 -0
  202. package/catalog/frontmcp-setup/examples/nx-workflow/scaffold-and-generate.md +62 -0
  203. package/catalog/frontmcp-setup/examples/project-structure-nx/nx-generator-scaffolding.md +73 -0
  204. package/catalog/frontmcp-setup/examples/project-structure-nx/nx-workspace-with-apps.md +85 -0
  205. package/catalog/frontmcp-setup/examples/project-structure-nx/shared-library-usage.md +89 -0
  206. package/catalog/frontmcp-setup/examples/project-structure-standalone/dev-workflow-commands.md +64 -0
  207. package/catalog/frontmcp-setup/examples/project-structure-standalone/feature-folder-organization.md +111 -0
  208. package/catalog/frontmcp-setup/examples/project-structure-standalone/minimal-standalone-layout.md +73 -0
  209. package/catalog/frontmcp-setup/examples/readme-guide/node-server-readme.md +89 -0
  210. package/catalog/frontmcp-setup/examples/readme-guide/vercel-deployment-readme.md +90 -0
  211. package/catalog/frontmcp-setup/examples/setup-project/basic-node-server.md +99 -0
  212. package/catalog/frontmcp-setup/examples/setup-project/cli-scaffold-with-flags.md +77 -0
  213. package/catalog/frontmcp-setup/examples/setup-project/vercel-serverless-server.md +89 -0
  214. package/catalog/frontmcp-setup/examples/setup-redis/docker-redis-local-dev.md +88 -0
  215. package/catalog/frontmcp-setup/examples/setup-redis/hybrid-vercel-kv-with-pubsub.md +78 -0
  216. package/catalog/frontmcp-setup/examples/setup-redis/vercel-kv-serverless.md +78 -0
  217. package/catalog/frontmcp-setup/examples/setup-sqlite/basic-sqlite-setup.md +75 -0
  218. package/catalog/frontmcp-setup/examples/setup-sqlite/encrypted-sqlite-storage.md +55 -0
  219. package/catalog/frontmcp-setup/examples/setup-sqlite/unix-socket-daemon.md +70 -0
  220. package/catalog/frontmcp-setup/references/frontmcp-skills-usage.md +9 -0
  221. package/catalog/frontmcp-setup/references/multi-app-composition.md +10 -0
  222. package/catalog/frontmcp-setup/references/nx-workflow.md +10 -0
  223. package/catalog/frontmcp-setup/references/project-structure-nx.md +10 -0
  224. package/catalog/frontmcp-setup/references/project-structure-standalone.md +10 -0
  225. package/catalog/frontmcp-setup/references/readme-guide.md +9 -0
  226. package/catalog/frontmcp-setup/references/setup-project.md +10 -0
  227. package/catalog/frontmcp-setup/references/setup-redis.md +10 -0
  228. package/catalog/frontmcp-setup/references/setup-sqlite.md +10 -0
  229. package/catalog/frontmcp-testing/examples/setup-testing/fixture-based-e2e-test.md +70 -0
  230. package/catalog/frontmcp-testing/examples/setup-testing/jest-config-with-coverage.md +59 -0
  231. package/catalog/frontmcp-testing/examples/setup-testing/unit-test-tool-resource-prompt.md +115 -0
  232. package/catalog/frontmcp-testing/examples/test-auth/oauth-flow-test.md +78 -0
  233. package/catalog/frontmcp-testing/examples/test-auth/role-based-access-test.md +88 -0
  234. package/catalog/frontmcp-testing/examples/test-auth/token-factory-test.md +71 -0
  235. package/catalog/frontmcp-testing/examples/test-browser-build/browser-bundle-validation.md +58 -0
  236. package/catalog/frontmcp-testing/examples/test-browser-build/playwright-browser-test.md +69 -0
  237. package/catalog/frontmcp-testing/examples/test-cli-binary/binary-startup-test.md +77 -0
  238. package/catalog/frontmcp-testing/examples/test-cli-binary/js-bundle-import-test.md +56 -0
  239. package/catalog/frontmcp-testing/examples/test-direct-client/basic-create-test.md +74 -0
  240. package/catalog/frontmcp-testing/examples/test-direct-client/openai-claude-format-test.md +79 -0
  241. package/catalog/frontmcp-testing/examples/test-e2e-handler/basic-e2e-test.md +67 -0
  242. package/catalog/frontmcp-testing/examples/test-e2e-handler/manual-client-with-transport.md +72 -0
  243. package/catalog/frontmcp-testing/examples/test-e2e-handler/tool-call-and-error-e2e.md +73 -0
  244. package/catalog/frontmcp-testing/examples/test-tool-unit/basic-tool-test.md +69 -0
  245. package/catalog/frontmcp-testing/examples/test-tool-unit/schema-validation-test.md +82 -0
  246. package/catalog/frontmcp-testing/examples/test-tool-unit/tool-error-handling-test.md +92 -0
  247. package/catalog/frontmcp-testing/references/setup-testing.md +10 -0
  248. package/catalog/frontmcp-testing/references/test-auth.md +10 -0
  249. package/catalog/frontmcp-testing/references/test-browser-build.md +9 -0
  250. package/catalog/frontmcp-testing/references/test-cli-binary.md +9 -0
  251. package/catalog/frontmcp-testing/references/test-direct-client.md +9 -0
  252. package/catalog/frontmcp-testing/references/test-e2e-handler.md +10 -0
  253. package/catalog/frontmcp-testing/references/test-tool-unit.md +10 -0
  254. package/catalog/skills-manifest.json +2383 -67
  255. package/package.json +1 -1
  256. package/src/manifest.d.ts +23 -0
  257. package/src/manifest.js +3 -1
  258. package/src/manifest.js.map +1 -1
@@ -607,6 +607,16 @@ class DataServer {}
607
607
  | Job times out unexpectedly | Default 5-minute timeout too short | Set `timeout` in `@Job` to a higher value (e.g., `600000` for 10 minutes) |
608
608
  | Permission denied error | User lacks required roles or scopes | Verify user has one of the `roles` and all `scopes` defined in `permissions` |
609
609
 
610
+ ## Examples
611
+
612
+ | Example | Level | Description |
613
+ | ------------------------------------------------------------------------ | ------------ | ------------------------------------------------------------------------------------------------------------------ |
614
+ | [`basic-report-job`](../examples/create-job/basic-report-job.md) | Basic | A minimal job that generates a report with progress tracking and structured output. |
615
+ | [`job-with-permissions`](../examples/create-job/job-with-permissions.md) | Advanced | A data export job with declarative permission controls, plus a function-style job for simple tasks. |
616
+ | [`job-with-retry`](../examples/create-job/job-with-retry.md) | Intermediate | A job that syncs data from an external API with automatic retry, exponential backoff, and batch progress tracking. |
617
+
618
+ > See all examples in [`examples/create-job/`](../examples/create-job/)
619
+
610
620
  ## Reference
611
621
 
612
622
  - [Jobs Documentation](https://docs.agentfront.dev/frontmcp/servers/jobs)
@@ -369,6 +369,16 @@ Any stage can have `@Will`, `@Did`, `@Stage`, or `@Around` hooks.
369
369
  | Multiple hooks execute in wrong order | Priorities not set or conflicting | Set explicit `priority` values; higher numbers execute first |
370
370
  | `@Stage` replacement causes downstream errors | Return value shape does not match stage contract | Ensure the return matches what the next stage expects (e.g., MCP response format) |
371
371
 
372
+ ## Examples
373
+
374
+ | Example | Level | Description |
375
+ | --------------------------------------------------------------------------------------------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
376
+ | [`basic-logging-plugin`](../examples/create-plugin-hooks/basic-logging-plugin.md) | Basic | Demonstrates a plugin that logs tool execution using `@Will` and `@Did` hook decorators from the pre-built `ToolHook` export. |
377
+ | [`caching-with-around`](../examples/create-plugin-hooks/caching-with-around.md) | Intermediate | Demonstrates wrapping tool execution with an `@Around` hook to implement result caching with TTL-based expiry. |
378
+ | [`tool-level-hooks-and-stage-replacement`](../examples/create-plugin-hooks/tool-level-hooks-and-stage-replacement.md) | Advanced | Demonstrates two advanced patterns: adding `@Will`/`@Did` hooks directly on a `@Tool` class (scoped to that tool only), and using `@Stage` in a plugin to replace a flow stage entirely with a filtered mock. |
379
+
380
+ > See all examples in [`examples/create-plugin-hooks/`](../examples/create-plugin-hooks/)
381
+
372
382
  ## Reference
373
383
 
374
384
  - [Plugin Hooks Documentation](https://docs.agentfront.dev/frontmcp/plugins/creating-plugins)
@@ -500,6 +500,16 @@ plugins/
500
500
  | `ProviderNotRegisteredError` for context extension | Token in `contextExtensions` not in `providers` | Ensure the token used in `contextExtensions[].token` is registered in the plugin's `providers` array. Use `{ provide: MyToken, useClass: MyService }` or list the class directly. If using `dynamicProviders()`, return the provider there |
501
501
  | Provider works in tools but not in context extension | Using class reference instead of Symbol token | Create a typed `Token<T> = Symbol('name')` in `symbols.ts`, use it in both `providers` and `contextExtensions`. Direct class references can fail if not constructable without dependencies |
502
502
 
503
+ ## Examples
504
+
505
+ | Example | Level | Description |
506
+ | --------------------------------------------------------------------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------- |
507
+ | [`basic-plugin-with-provider`](../examples/create-plugin/basic-plugin-with-provider.md) | Basic | A minimal plugin that contributes an injectable service via the `providers` and `exports` arrays. |
508
+ | [`configurable-dynamic-plugin`](../examples/create-plugin/configurable-dynamic-plugin.md) | Advanced | A plugin that accepts runtime configuration via `DynamicPlugin` and extends decorator metadata with custom fields. |
509
+ | [`plugin-with-context-extension`](../examples/create-plugin/plugin-with-context-extension.md) | Intermediate | A plugin that adds a `this.auditLog` property to all execution contexts using context extensions and module augmentation. |
510
+
511
+ > See all examples in [`examples/create-plugin/`](../examples/create-plugin/)
512
+
503
513
  ## Reference
504
514
 
505
515
  - [Plugin System Documentation](https://docs.agentfront.dev/frontmcp/plugins/creating-plugins)
@@ -437,6 +437,16 @@ This creates the prompt file, spec file, and updates barrel exports.
437
437
  | Type error on `execute()` return | Returning plain string instead of `GetPromptResult` | Wrap return in `{ messages: [{ role: 'user', content: { type: 'text', text: '...' } }] }` |
438
438
  | `this.get(TOKEN)` throws DependencyNotFoundError | Provider not registered in scope | Register provider in `providers` array of `@App` or `@FrontMcp` |
439
439
 
440
+ ## Examples
441
+
442
+ | Example | Level | Description |
443
+ | ----------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------------------------------------------- |
444
+ | [`basic-prompt`](../examples/create-prompt/basic-prompt.md) | Basic | A simple prompt that generates a structured code review message from user-provided arguments. |
445
+ | [`dynamic-rag-prompt`](../examples/create-prompt/dynamic-rag-prompt.md) | Advanced | A prompt that queries a knowledge base via DI to build context-aware messages at runtime. |
446
+ | [`multi-turn-debug-session`](../examples/create-prompt/multi-turn-debug-session.md) | Intermediate | A prompt that uses alternating user/assistant messages to guide a structured debugging conversation. |
447
+
448
+ > See all examples in [`examples/create-prompt/`](../examples/create-prompt/)
449
+
440
450
  ## Reference
441
451
 
442
452
  - [Prompts Documentation](https://docs.agentfront.dev/frontmcp/servers/prompts)
@@ -267,6 +267,15 @@ frontmcp dev
267
267
  | Type mismatch on `this.get(TOKEN)` | Token typed with wrong interface | Ensure `Token<T>` generic matches the provider's implemented interface |
268
268
  | Provider not destroyed on shutdown | Missing `onDestroy()` method | Implement `onDestroy()` to close connections and release resources |
269
269
 
270
+ ## Examples
271
+
272
+ | Example | Level | Description |
273
+ | ------------------------------------------------------------------------------------- | ------------ | ----------------------------------------------------------------------------------------------------- |
274
+ | [`basic-database-provider`](../examples/create-provider/basic-database-provider.md) | Basic | A provider that manages a database connection pool with `onInit()` and `onDestroy()` lifecycle hooks. |
275
+ | [`config-and-api-providers`](../examples/create-provider/config-and-api-providers.md) | Intermediate | A configuration provider with readonly environment settings and an HTTP API client provider. |
276
+
277
+ > See all examples in [`examples/create-provider/`](../examples/create-provider/)
278
+
270
279
  ## Reference
271
280
 
272
281
  - [Providers Documentation](https://docs.agentfront.dev/frontmcp/extensibility/providers)
@@ -465,24 +465,55 @@ type ResourceArgumentCompleter = (partial: string) => Promise<ResourceCompletion
465
465
 
466
466
  ### How to Implement
467
467
 
468
- Override the `getArgumentCompleter(argName)` method in your `ResourceContext` subclass. Return a completer function for argument names you support, or `null` for unknown arguments.
468
+ There are two approaches, both with full DI access via `this.get()`:
469
+
470
+ #### Convention-Based (Preferred)
471
+
472
+ Define a method named `${argName}Completer` on your `ResourceContext` subclass. The framework discovers it automatically -- no override needed.
473
+
474
+ ```typescript
475
+ @ResourceTemplate({
476
+ name: 'user-profile',
477
+ description: 'User profile by ID',
478
+ uriTemplate: 'users://{userId}/profile',
479
+ mimeType: 'application/json',
480
+ })
481
+ class UserProfileResource extends ResourceContext<{ userId: string }> {
482
+ async execute(uri: string, params: { userId: string }) {
483
+ const user = await this.get(UserService).findById(params.userId);
484
+ return { id: user.id, name: user.name, email: user.email };
485
+ }
486
+
487
+ async userIdCompleter(partial: string): Promise<ResourceCompletionResult> {
488
+ const users = await this.get(UserService).search(partial);
489
+ return { values: users.map((u) => u.id), total: users.length };
490
+ }
491
+ }
492
+ ```
493
+
494
+ The naming convention is `${argName}Completer` -- for a URI parameter `{accountName}`, define `accountNameCompleter(partial)`.
495
+
496
+ #### Override-Based
497
+
498
+ Override the `getArgumentCompleter(argName)` method for dynamic dispatch across multiple parameters. Return a completer function for argument names you support, or `null` for unknown arguments.
469
499
 
470
500
  ```typescript
471
501
  getArgumentCompleter(argName: string): ResourceArgumentCompleter | null {
472
- if (argName === 'myParam') {
502
+ if (argName === 'userId') {
473
503
  return async (partial) => {
474
- // Search or filter based on partial input
475
- const matches = await findMatches(partial);
476
- return { values: matches, total: matches.length };
504
+ const users = await this.get(UserService).search(partial);
505
+ return { values: users.map((u) => u.id), total: users.length };
477
506
  };
478
507
  }
479
508
  return null;
480
509
  }
481
510
  ```
482
511
 
512
+ Convention-based completers take priority when both are present on the same class.
513
+
483
514
  ### Complete Example
484
515
 
485
- A user profile template resource that autocompletes user IDs by searching a user service:
516
+ A user profile template resource that autocompletes user IDs using the convention-based approach:
486
517
 
487
518
  ```typescript
488
519
  @ResourceTemplate({
@@ -497,14 +528,9 @@ class UserProfileResource extends ResourceContext<{ userId: string }> {
497
528
  return { id: user.id, name: user.name, email: user.email };
498
529
  }
499
530
 
500
- getArgumentCompleter(argName: string): ResourceArgumentCompleter | null {
501
- if (argName === 'userId') {
502
- return async (partial) => {
503
- const users = await this.get(UserService).search(partial);
504
- return { values: users.map((u) => u.id), total: users.length };
505
- };
506
- }
507
- return null;
531
+ async userIdCompleter(partial: string): Promise<ResourceCompletionResult> {
532
+ const users = await this.get(UserService).search(partial);
533
+ return { values: users.map((u) => u.id), total: users.length };
508
534
  }
509
535
  }
510
536
  ```
@@ -540,8 +566,9 @@ When a client requests completions for the `userId` parameter with a partial str
540
566
 
541
567
  ### Autocompletion
542
568
 
543
- - [ ] Template resources with dynamic params implement `getArgumentCompleter()`
569
+ - [ ] Template resources with dynamic params define `${argName}Completer` methods or override `getArgumentCompleter()`
544
570
  - [ ] Completer returns `{ values, total?, hasMore? }` matching the partial input
571
+ - [ ] Completers use `this.get()` for DI (both convention and override patterns support full DI)
545
572
 
546
573
  ## Troubleshooting
547
574
 
@@ -553,6 +580,16 @@ When a client requests completions for the `userId` parameter with a partial str
553
580
  | Binary content is garbled | Returning raw buffer in `text` field | Use `blob: buffer.toString('base64')` instead of `text` for binary data |
554
581
  | `this.get(TOKEN)` throws DependencyNotFoundError | Provider not registered in scope | Register provider in `providers` array of `@App` or `@FrontMcp` |
555
582
 
583
+ ## Examples
584
+
585
+ | Example | Level | Description |
586
+ | ------------------------------------------------------------------------------------- | ------------ | ------------------------------------------------------------------------------------ |
587
+ | [`basic-static-resource`](../examples/create-resource/basic-static-resource.md) | Basic | A static resource that exposes application configuration at a fixed URI. |
588
+ | [`binary-and-multi-content`](../examples/create-resource/binary-and-multi-content.md) | Advanced | A resource serving binary blob data and a resource returning multiple content items. |
589
+ | [`parameterized-template`](../examples/create-resource/parameterized-template.md) | Intermediate | A resource template with typed URI parameters and argument autocompletion. |
590
+
591
+ > See all examples in [`examples/create-resource/`](../examples/create-resource/)
592
+
556
593
  ## Reference
557
594
 
558
595
  - [Resources Documentation](https://docs.agentfront.dev/frontmcp/servers/resources)
@@ -727,6 +727,16 @@ class DeployServiceSkill extends SkillContext {}
727
727
  | Instructions are empty at runtime | `{ file: './path.md' }` path is relative to wrong directory | Use a path relative to the skill file's location, not the project root |
728
728
  | Parameters not visible to AI client | `parameters` defined as a plain object instead of an array | Use array format: `[{ name, description, type, required }]` |
729
729
 
730
+ ## Examples
731
+
732
+ | Example | Level | Description |
733
+ | ------------------------------------------------------------------------------------------------- | ------------ | -------------------------------------------------------------------------------------------------------------------- |
734
+ | [`basic-tool-orchestration`](../examples/create-skill-with-tools/basic-tool-orchestration.md) | Basic | A skill that guides an AI client through a deploy workflow using referenced MCP tools. |
735
+ | [`directory-skill-with-tools`](../examples/create-skill-with-tools/directory-skill-with-tools.md) | Advanced | A directory-based skill loaded with `skillDir()`, plus a class-based skill using Agent Skills spec metadata fields. |
736
+ | [`incident-response-skill`](../examples/create-skill-with-tools/incident-response-skill.md) | Intermediate | A skill that uses object-style tool references with purpose descriptions and required flags, plus strict validation. |
737
+
738
+ > See all examples in [`examples/create-skill-with-tools/`](../examples/create-skill-with-tools/)
739
+
730
740
  ## Reference
731
741
 
732
742
  - [Skills Documentation](https://docs.agentfront.dev/frontmcp/servers/skills)
@@ -606,6 +606,16 @@ class DevServer {}
606
606
  | Skill parameters are ignored by the AI | Parameters are declared but not referenced in the instruction text | Mention each parameter by name in the instructions so the AI knows how to apply them |
607
607
  | Directory-based skill missing bundled files | Subdirectories are not named `scripts/`, `references/`, or `assets/` | Use the exact conventional directory names; other names are not auto-bundled |
608
608
 
609
+ ## Examples
610
+
611
+ | Example | Level | Description |
612
+ | ---------------------------------------------------------------------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------- |
613
+ | [`basic-inline-skill`](../examples/create-skill/basic-inline-skill.md) | Basic | A minimal instruction-only skill with inline content and the function builder alternative. |
614
+ | [`directory-based-skill`](../examples/create-skill/directory-based-skill.md) | Advanced | A skill loaded from a directory structure with SKILL.md frontmatter, plus file-based and URL-based instruction sources. |
615
+ | [`parameterized-skill`](../examples/create-skill/parameterized-skill.md) | Intermediate | A skill with customizable parameters, usage examples for AI guidance, and controlled visibility. |
616
+
617
+ > See all examples in [`examples/create-skill/`](../examples/create-skill/)
618
+
609
619
  ## Reference
610
620
 
611
621
  - **Docs:** <https://docs.agentfront.dev/frontmcp/servers/skills>
@@ -37,3 +37,12 @@ Annotations provide hints to MCP clients about tool behavior:
37
37
  - Set `destructiveHint: true` for delete/overwrite operations (triggers client warnings)
38
38
  - Set `idempotentHint: true` for safe-to-retry tools
39
39
  - Set `openWorldHint: false` for tools that only access local data
40
+
41
+ ## Examples
42
+
43
+ | Example | Level | Description |
44
+ | ------------------------------------------------------------------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------- |
45
+ | [`destructive-delete-tool`](../examples/create-tool-annotations/destructive-delete-tool.md) | Intermediate | Demonstrates annotating a tool that deletes data, enabling MCP clients to warn users before execution. |
46
+ | [`readonly-query-tool`](../examples/create-tool-annotations/readonly-query-tool.md) | Basic | Demonstrates annotating a tool that only reads data, signaling to MCP clients that it has no side effects and is safe to retry. |
47
+
48
+ > See all examples in [`examples/create-tool-annotations/`](../examples/create-tool-annotations/)
@@ -59,3 +59,13 @@ When `outputSchema` is omitted, the tool returns unvalidated content. This:
59
59
  - Risks leaking internal fields to the client
60
60
  - Prevents CodeCall from inferring return types
61
61
  - Loses compile-time type checking on `Out` generic
62
+
63
+ ## Examples
64
+
65
+ | Example | Level | Description |
66
+ | ----------------------------------------------------------------------------------------------------------- | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
67
+ | [`primitive-and-media-outputs`](../examples/create-tool-output-schema-types/primitive-and-media-outputs.md) | Intermediate | Demonstrates using primitive string literals and media types as `outputSchema` for tools that return plain text, images, or multi-content arrays. |
68
+ | [`zod-raw-shape-output`](../examples/create-tool-output-schema-types/zod-raw-shape-output.md) | Basic | Demonstrates the recommended approach of using a Zod raw shape as `outputSchema` for structured, validated JSON output. |
69
+ | [`zod-schema-advanced-output`](../examples/create-tool-output-schema-types/zod-schema-advanced-output.md) | Advanced | Demonstrates using full Zod schema objects (not raw shapes) as `outputSchema`, including `z.object()`, `z.array()`, `z.union()`, and `z.discriminatedUnion()`. |
70
+
71
+ > See all examples in [`examples/create-tool-output-schema-types/`](../examples/create-tool-output-schema-types/)
@@ -581,6 +581,16 @@ class ConvertCurrencyTool extends ToolContext {
581
581
  | Output contains unexpected fields | No `outputSchema` defined | Add `outputSchema` to strip unvalidated fields from response |
582
582
  | Tool times out | No timeout configured for long operation | Add `timeout: { executeMs: 30_000 }` to `@Tool` options |
583
583
 
584
+ ## Examples
585
+
586
+ | Example | Level | Description |
587
+ | --------------------------------------------------------------------------------------------------------- | ------------ | -------------------------------------------------------------------------------------------------------------- |
588
+ | [`basic-class-tool`](../examples/create-tool/basic-class-tool.md) | Basic | A minimal tool using the class-based pattern with Zod input validation and output schema. |
589
+ | [`tool-with-di-and-errors`](../examples/create-tool/tool-with-di-and-errors.md) | Intermediate | A tool that resolves a database service via DI and uses `this.fail()` for business-logic errors. |
590
+ | [`tool-with-rate-limiting-and-progress`](../examples/create-tool/tool-with-rate-limiting-and-progress.md) | Advanced | A batch processing tool that uses rate limiting, concurrency control, progress notifications, and annotations. |
591
+
592
+ > See all examples in [`examples/create-tool/`](../examples/create-tool/)
593
+
584
594
  ## Reference
585
595
 
586
596
  - [Tools Documentation](https://docs.agentfront.dev/frontmcp/servers/tools)
@@ -750,6 +750,16 @@ class CiServer {}
750
750
  | Webhook trigger does not fire | Missing or mismatched `webhook.secret` | Ensure `webhook.secret` matches the sender's HMAC secret and `webhook.path` is correct |
751
751
  | Workflow exceeds timeout | Total step execution time exceeds the default 600000 ms | Increase `timeout` at the workflow level or add per-step `timeout` overrides |
752
752
 
753
+ ## Examples
754
+
755
+ | Example | Level | Description |
756
+ | --------------------------------------------------------------------------------------------- | ------------ | --------------------------------------------------------------------------------------------------------------------------------- |
757
+ | [`basic-deploy-pipeline`](../examples/create-workflow/basic-deploy-pipeline.md) | Basic | A linear workflow that builds, tests, and deploys a service with step dependencies and dynamic input. |
758
+ | [`parallel-validation-pipeline`](../examples/create-workflow/parallel-validation-pipeline.md) | Intermediate | A workflow that validates multiple datasets in parallel, then conditionally merges results or notifies on failure. |
759
+ | [`webhook-triggered-workflow`](../examples/create-workflow/webhook-triggered-workflow.md) | Advanced | A CI/CD workflow triggered by a webhook, featuring `continueOnError`, per-step conditions, and the `workflow()` function builder. |
760
+
761
+ > See all examples in [`examples/create-workflow/`](../examples/create-workflow/)
762
+
753
763
  ## Reference
754
764
 
755
765
  - [Workflows Documentation](https://docs.agentfront.dev/frontmcp/servers/workflows)
@@ -744,6 +744,16 @@ class AuditHooks {
744
744
 
745
745
  ---
746
746
 
747
+ ## Examples
748
+
749
+ | Example | Level | Description |
750
+ | -------------------------------------------------------------------------------------------------------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
751
+ | [`agent-skill-job-workflow`](../examples/decorators-guide/agent-skill-job-workflow.md) | Advanced | Demonstrates the advanced decorator types: `@Agent` for autonomous AI agents, `@Skill` for knowledge packages, `@Job` for background tasks, and `@Workflow` for multi-step orchestration. |
752
+ | [`basic-server-with-app-and-tools`](../examples/decorators-guide/basic-server-with-app-and-tools.md) | Basic | Demonstrates the minimal decorator hierarchy to create a working FrontMCP server with one app containing a tool and a resource. |
753
+ | [`multi-app-with-plugins-and-providers`](../examples/decorators-guide/multi-app-with-plugins-and-providers.md) | Intermediate | Demonstrates a server with multiple `@App` modules, a `@Provider` for dependency injection, and a `@Plugin` for cross-cutting concerns. |
754
+
755
+ > See all examples in [`examples/decorators-guide/`](../examples/decorators-guide/)
756
+
747
757
  ## Reference
748
758
 
749
759
  - **Official docs:** [FrontMCP Decorators Overview](https://docs.agentfront.dev/frontmcp/sdk-reference/decorators/overview)
@@ -193,6 +193,16 @@ class IntegrationHub {}
193
193
  | Stale tools after API update | Spec polling not configured | Add `polling: { intervalMs: 300000 }` to refresh every 5 minutes |
194
194
  | TypeScript error importing adapter | Wrong import path | Import from `@frontmcp/adapters`: `import { OpenapiAdapter } from '@frontmcp/adapters'` |
195
195
 
196
+ ## Examples
197
+
198
+ | Example | Level | Description |
199
+ | ----------------------------------------------------------------------------------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
200
+ | [`authenticated-adapter-with-polling`](../examples/official-adapters/authenticated-adapter-with-polling.md) | Intermediate | Demonstrates configuring authentication (API key and bearer token) and automatic spec polling for OpenAPI adapters. |
201
+ | [`basic-openapi-adapter`](../examples/official-adapters/basic-openapi-adapter.md) | Basic | Demonstrates converting an OpenAPI specification into MCP tools automatically using `OpenapiAdapter` with minimal configuration. |
202
+ | [`multi-api-hub-with-inline-spec`](../examples/official-adapters/multi-api-hub-with-inline-spec.md) | Advanced | Demonstrates registering multiple OpenAPI adapters from different APIs in a single app, including one with an inline spec definition instead of a remote URL. |
203
+
204
+ > See all examples in [`examples/official-adapters/`](../examples/official-adapters/)
205
+
196
206
  ## Reference
197
207
 
198
208
  - [Adapter Overview Documentation](https://docs.agentfront.dev/frontmcp/adapters/overview)
@@ -731,6 +731,16 @@ class ProductionServer {}
731
731
  | Dashboard returns 404 | Plugin is in beta and auto-disabled in production (`NODE_ENV=production`) | Dashboard is unstable — avoid in production. For dev: set `enabled: true` explicitly |
732
732
  | Approval webhook times out | Callback URL not reachable from the external approval service | Verify `callbackPath` is publicly accessible and matches the webhook configuration |
733
733
 
734
+ ## Examples
735
+
736
+ | Example | Level | Description |
737
+ | -------------------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
738
+ | [`cache-and-feature-flags`](../examples/official-plugins/cache-and-feature-flags.md) | Intermediate | Demonstrates combining the Cache plugin for tool result caching with the Feature Flags plugin for gating tools behind flags. |
739
+ | [`production-multi-plugin-setup`](../examples/official-plugins/production-multi-plugin-setup.md) | Advanced | Demonstrates a production-ready server configuration combining CodeCall, Remember, Approval, Cache, and Feature Flags plugins with Redis storage and external flag services. |
740
+ | [`remember-plugin-session-memory`](../examples/official-plugins/remember-plugin-session-memory.md) | Basic | Demonstrates installing the Remember plugin and using `this.remember` in tools to store and retrieve session memory. |
741
+
742
+ > See all examples in [`examples/official-plugins/`](../examples/official-plugins/)
743
+
734
744
  ## Reference
735
745
 
736
746
  - [Plugins Overview Documentation](https://docs.agentfront.dev/frontmcp/plugins/overview)
@@ -9,7 +9,7 @@ priority: 10
9
9
  visibility: both
10
10
  license: Apache-2.0
11
11
  metadata:
12
- docs: https://docs.agentfront.dev/frontmcp/extensibility/overview
12
+ docs: https://docs.agentfront.dev/frontmcp/extensibility/providers
13
13
  ---
14
14
 
15
15
  # FrontMCP Extensibility
@@ -0,0 +1,175 @@
1
+ ---
2
+ name: product-catalog-search
3
+ reference: vectoriadb
4
+ level: advanced
5
+ description: 'Shows advanced VectoriaDB usage with typed document metadata, batch operations, filtered search by multiple criteria, and batch indexing of a product catalog.'
6
+ tags: [extensibility, vectoriadb, product, catalog, search]
7
+ features:
8
+ - 'Typed document metadata with `ProductDoc extends DocumentMetadata`'
9
+ - 'Batch operations with `db.addMany()` for efficient catalog indexing'
10
+ - 'Multi-criteria filtered search combining category, price, and stock status'
11
+ - '`maxDocuments` option for DoS protection on large datasets'
12
+ - '`FileStorageAdapter` for persisting the entire product index to disk'
13
+ - 'Semantic matching: "something to block office noise" finds "noise-canceling headphones"'
14
+ ---
15
+
16
+ # VectoriaDB: Product Catalog with Typed Metadata and Batch Operations
17
+
18
+ Shows advanced VectoriaDB usage with typed document metadata, batch operations, filtered search by multiple criteria, and batch indexing of a product catalog.
19
+
20
+ ## Code
21
+
22
+ ```typescript
23
+ // src/providers/product-search.provider.ts
24
+ import { Provider, ProviderScope } from '@frontmcp/sdk';
25
+ import { VectoriaDB, FileStorageAdapter } from 'vectoriadb';
26
+ import type { DocumentMetadata } from 'vectoriadb';
27
+
28
+ export const ProductSearch = Symbol('ProductSearch');
29
+
30
+ // Typed metadata for product documents
31
+ interface ProductDoc extends DocumentMetadata {
32
+ name: string;
33
+ category: string;
34
+ price: number;
35
+ inStock: boolean;
36
+ }
37
+
38
+ @Provider({ name: 'product-search', provide: ProductSearch, scope: ProviderScope.GLOBAL })
39
+ export class ProductSearchProvider {
40
+ private db: VectoriaDB<ProductDoc>;
41
+ private ready: Promise<void>;
42
+
43
+ constructor() {
44
+ this.db = new VectoriaDB<ProductDoc>({
45
+ modelName: 'Xenova/all-MiniLM-L6-v2',
46
+ cacheDir: './.cache/transformers',
47
+ useHNSW: true,
48
+ defaultSimilarityThreshold: 0.3,
49
+ defaultTopK: 10,
50
+ maxDocuments: 100000, // DoS protection
51
+ storageAdapter: new FileStorageAdapter({ cacheDir: './.cache/product-vectors' }),
52
+ });
53
+ this.ready = this.db.initialize();
54
+ }
55
+
56
+ // Batch indexing for large catalogs
57
+ async indexProducts(
58
+ products: Array<{
59
+ id: string;
60
+ description: string;
61
+ name: string;
62
+ category: string;
63
+ price: number;
64
+ inStock: boolean;
65
+ }>,
66
+ ) {
67
+ await this.ready;
68
+
69
+ // Use addMany for efficient batch operations
70
+ await this.db.addMany(
71
+ products.map((p) => ({
72
+ id: p.id,
73
+ text: `${p.name}: ${p.description}`,
74
+ metadata: {
75
+ id: p.id,
76
+ name: p.name,
77
+ category: p.category,
78
+ price: p.price,
79
+ inStock: p.inStock,
80
+ },
81
+ })),
82
+ );
83
+
84
+ await this.db.saveToStorage();
85
+ }
86
+
87
+ // Multi-criteria filtered search
88
+ async search(query: string, filters?: { category?: string; maxPrice?: number; inStockOnly?: boolean }, limit = 10) {
89
+ await this.ready;
90
+
91
+ return this.db.search(query, {
92
+ topK: limit,
93
+ threshold: 0.4,
94
+ filter: (meta) => {
95
+ if (filters?.category && meta.category !== filters.category) return false;
96
+ if (filters?.maxPrice !== undefined && meta.price > filters.maxPrice) return false;
97
+ if (filters?.inStockOnly && !meta.inStock) return false;
98
+ return true;
99
+ },
100
+ });
101
+ }
102
+ }
103
+ ```
104
+
105
+ ```typescript
106
+ // src/tools/find-products.tool.ts
107
+ import { Tool, ToolContext } from '@frontmcp/sdk';
108
+ import { z } from 'zod';
109
+ import { ProductSearch } from '../providers/product-search.provider';
110
+
111
+ @Tool({
112
+ name: 'find_products',
113
+ description: 'Find products using natural language (e.g., "something to block office noise")',
114
+ inputSchema: {
115
+ query: z.string().min(1).describe('Natural language product search'),
116
+ category: z.string().optional().describe('Filter by category'),
117
+ maxPrice: z.number().positive().optional().describe('Maximum price'),
118
+ inStockOnly: z.boolean().default(true).describe('Only show in-stock products'),
119
+ limit: z.number().int().min(1).max(20).default(5).describe('Max results'),
120
+ },
121
+ outputSchema: {
122
+ products: z.array(
123
+ z.object({
124
+ id: z.string(),
125
+ name: z.string(),
126
+ category: z.string(),
127
+ price: z.number(),
128
+ score: z.number(),
129
+ inStock: z.boolean(),
130
+ }),
131
+ ),
132
+ total: z.number(),
133
+ },
134
+ })
135
+ export class FindProductsTool extends ToolContext {
136
+ async execute(input: { query: string; category?: string; maxPrice?: number; inStockOnly: boolean; limit: number }) {
137
+ const search = this.get(ProductSearch);
138
+
139
+ const results = await search.search(
140
+ input.query,
141
+ {
142
+ category: input.category,
143
+ maxPrice: input.maxPrice,
144
+ inStockOnly: input.inStockOnly,
145
+ },
146
+ input.limit,
147
+ );
148
+
149
+ return {
150
+ products: results.map((r) => ({
151
+ id: r.id,
152
+ name: r.metadata.name,
153
+ category: r.metadata.category,
154
+ price: r.metadata.price,
155
+ score: r.score,
156
+ inStock: r.metadata.inStock,
157
+ })),
158
+ total: results.length,
159
+ };
160
+ }
161
+ }
162
+ ```
163
+
164
+ ## What This Demonstrates
165
+
166
+ - Typed document metadata with `ProductDoc extends DocumentMetadata`
167
+ - Batch operations with `db.addMany()` for efficient catalog indexing
168
+ - Multi-criteria filtered search combining category, price, and stock status
169
+ - `maxDocuments` option for DoS protection on large datasets
170
+ - `FileStorageAdapter` for persisting the entire product index to disk
171
+ - Semantic matching: "something to block office noise" finds "noise-canceling headphones"
172
+
173
+ ## Related
174
+
175
+ - See `vectoriadb` for the full configuration reference, engine comparison, and TFIDFVectoria examples