zuplo 6.67.32 → 6.68.0
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.
- package/README.md +9 -0
- package/docs/_index.md +44 -0
- package/docs/ai-gateway/apps.mdx +28 -0
- package/docs/ai-gateway/custom-providers.mdx +54 -0
- package/docs/ai-gateway/getting-started.mdx +224 -0
- package/docs/ai-gateway/guardrails.mdx +65 -0
- package/docs/ai-gateway/integrations/ai-sdk.mdx +109 -0
- package/docs/ai-gateway/integrations/claude-code.mdx +49 -0
- package/docs/ai-gateway/integrations/codex.mdx +78 -0
- package/docs/ai-gateway/integrations/goose.mdx +104 -0
- package/docs/ai-gateway/integrations/langchain.mdx +66 -0
- package/docs/ai-gateway/integrations/openai.mdx +99 -0
- package/docs/ai-gateway/introduction.mdx +85 -0
- package/docs/ai-gateway/managing-apps.mdx +46 -0
- package/docs/ai-gateway/managing-providers.mdx +66 -0
- package/docs/ai-gateway/managing-teams.mdx +63 -0
- package/docs/ai-gateway/policies/akamai-ai-firewall.mdx +125 -0
- package/docs/ai-gateway/policies/comet-opik-tracing.mdx +139 -0
- package/docs/ai-gateway/policies/galileo-tracing.mdx +147 -0
- package/docs/ai-gateway/providers.mdx +32 -0
- package/docs/ai-gateway/teams.mdx +38 -0
- package/docs/ai-gateway/universal-api.mdx +43 -0
- package/docs/ai-gateway/usage-limits.mdx +89 -0
- package/docs/api-management/introduction.md +127 -0
- package/docs/articles/accounts/audit-logs.mdx +227 -0
- package/docs/articles/accounts/billing.mdx +25 -0
- package/docs/articles/accounts/default-api-key.mdx +30 -0
- package/docs/articles/accounts/delete-account.mdx +36 -0
- package/docs/articles/accounts/enterprise-sso.mdx +116 -0
- package/docs/articles/accounts/managing-account-members.mdx +45 -0
- package/docs/articles/accounts/managing-project-members.mdx +37 -0
- package/docs/articles/accounts/members-and-roles.mdx +21 -0
- package/docs/articles/accounts/roles-and-permissions.mdx +115 -0
- package/docs/articles/accounts/zuplo-api-keys.mdx +94 -0
- package/docs/articles/add-api-to-backstage.mdx +216 -0
- package/docs/articles/advanced-path-matching.mdx +139 -0
- package/docs/articles/api-key-administration.mdx +47 -0
- package/docs/articles/api-key-api.mdx +220 -0
- package/docs/articles/api-key-authentication.mdx +195 -0
- package/docs/articles/api-key-buckets.mdx +61 -0
- package/docs/articles/api-key-end-users.mdx +52 -0
- package/docs/articles/api-key-leak-detection.mdx +75 -0
- package/docs/articles/api-key-management.mdx +100 -0
- package/docs/articles/api-key-react-component.mdx +90 -0
- package/docs/articles/api-key-service-limits.mdx +14 -0
- package/docs/articles/archiving-requests-to-storage.mdx +119 -0
- package/docs/articles/branch-based-deployments.mdx +184 -0
- package/docs/articles/bypass-policy-for-testing.mdx +117 -0
- package/docs/articles/check-ip-address.mdx +17 -0
- package/docs/articles/ci-cd-azure/basic-deployment.mdx +49 -0
- package/docs/articles/ci-cd-azure/deploy-and-test.mdx +47 -0
- package/docs/articles/ci-cd-azure/local-testing.mdx +59 -0
- package/docs/articles/ci-cd-azure/multi-stage-deployment.mdx +88 -0
- package/docs/articles/ci-cd-azure/pr-preview-environments.mdx +50 -0
- package/docs/articles/ci-cd-azure/tag-based-releases.mdx +37 -0
- package/docs/articles/ci-cd-bitbucket/basic-deployment.mdx +27 -0
- package/docs/articles/ci-cd-bitbucket/deploy-and-test.mdx +41 -0
- package/docs/articles/ci-cd-bitbucket/local-testing.mdx +34 -0
- package/docs/articles/ci-cd-bitbucket/multi-stage-deployment.mdx +52 -0
- package/docs/articles/ci-cd-bitbucket/pr-preview-environments.mdx +46 -0
- package/docs/articles/ci-cd-bitbucket/tag-based-releases.mdx +27 -0
- package/docs/articles/ci-cd-circleci/basic-deployment.mdx +34 -0
- package/docs/articles/ci-cd-circleci/deploy-and-test.mdx +44 -0
- package/docs/articles/ci-cd-circleci/local-testing.mdx +50 -0
- package/docs/articles/ci-cd-circleci/multi-stage-deployment.mdx +82 -0
- package/docs/articles/ci-cd-circleci/pr-preview-environments.mdx +47 -0
- package/docs/articles/ci-cd-circleci/tag-based-releases.mdx +38 -0
- package/docs/articles/ci-cd-github/basic-deployment.mdx +48 -0
- package/docs/articles/ci-cd-github/cleanup-on-branch-delete.mdx +123 -0
- package/docs/articles/ci-cd-github/deploy-and-test.mdx +82 -0
- package/docs/articles/ci-cd-github/local-testing.mdx +102 -0
- package/docs/articles/ci-cd-github/multi-stage-deployment.mdx +136 -0
- package/docs/articles/ci-cd-github/pr-preview-environments.mdx +106 -0
- package/docs/articles/ci-cd-github/tag-based-releases.mdx +99 -0
- package/docs/articles/ci-cd-gitlab/basic-deployment.mdx +28 -0
- package/docs/articles/ci-cd-gitlab/deploy-and-test.mdx +44 -0
- package/docs/articles/ci-cd-gitlab/local-testing.mdx +39 -0
- package/docs/articles/ci-cd-gitlab/mr-preview-environments.mdx +52 -0
- package/docs/articles/ci-cd-gitlab/multi-stage-deployment.mdx +64 -0
- package/docs/articles/ci-cd-gitlab/tag-based-releases.mdx +28 -0
- package/docs/articles/composite-policy-reference.mdx +284 -0
- package/docs/articles/configuring-auth0-for-mcp-auth.mdx +186 -0
- package/docs/articles/configuring-okta-for-mcp-auth.mdx +208 -0
- package/docs/articles/convert-urls-to-openapi.mdx +62 -0
- package/docs/articles/cors.mdx +447 -0
- package/docs/articles/custom-audit-log-policy.mdx +95 -0
- package/docs/articles/custom-ci-cd-azure.mdx +81 -0
- package/docs/articles/custom-ci-cd-bitbucket.mdx +80 -0
- package/docs/articles/custom-ci-cd-circleci.mdx +78 -0
- package/docs/articles/custom-ci-cd-github.mdx +99 -0
- package/docs/articles/custom-ci-cd-gitlab.mdx +79 -0
- package/docs/articles/custom-ci-cd.mdx +82 -0
- package/docs/articles/custom-code-patterns.md +418 -0
- package/docs/articles/custom-domains.mdx +258 -0
- package/docs/articles/custom-logging-example.mdx +139 -0
- package/docs/articles/ddos-protection.mdx +138 -0
- package/docs/articles/development-options.mdx +49 -0
- package/docs/articles/environment-variables.mdx +134 -0
- package/docs/articles/environments.mdx +143 -0
- package/docs/articles/fastly-zuplo-host-setup.mdx +41 -0
- package/docs/articles/github-deployment-testing.mdx +101 -0
- package/docs/articles/gke-with-upstream-auth-policy.mdx +192 -0
- package/docs/articles/graphql-security.mdx +180 -0
- package/docs/articles/handling-form-data.mdx +61 -0
- package/docs/articles/health-checks.mdx +109 -0
- package/docs/articles/hosting-options.mdx +70 -0
- package/docs/articles/lazy-load-configuration-into-cache.mdx +92 -0
- package/docs/articles/limits.mdx +98 -0
- package/docs/articles/local-development-debugging.mdx +44 -0
- package/docs/articles/local-development-env-variables.mdx +23 -0
- package/docs/articles/local-development-installing-packages.mdx +23 -0
- package/docs/articles/local-development-routes-designer.mdx +27 -0
- package/docs/articles/local-development-services.mdx +40 -0
- package/docs/articles/local-development-troubleshooting.mdx +56 -0
- package/docs/articles/local-development.mdx +81 -0
- package/docs/articles/log-plugin-aws-cloudwatch.mdx +83 -0
- package/docs/articles/log-plugin-datadog.mdx +84 -0
- package/docs/articles/log-plugin-dynatrace.mdx +75 -0
- package/docs/articles/log-plugin-gcp.mdx +75 -0
- package/docs/articles/log-plugin-loki.mdx +136 -0
- package/docs/articles/log-plugin-new-relic.mdx +84 -0
- package/docs/articles/log-plugin-splunk.mdx +104 -0
- package/docs/articles/log-plugin-sumo.mdx +73 -0
- package/docs/articles/log-plugin-vmware-log-insight.mdx +154 -0
- package/docs/articles/log-request-response-data.mdx +398 -0
- package/docs/articles/logging.mdx +115 -0
- package/docs/articles/manual-mcp-oauth-testing.mdx +193 -0
- package/docs/articles/mcp-quickstart.mdx +135 -0
- package/docs/articles/metrics-plugins.mdx +371 -0
- package/docs/articles/migrate-from-apigee.md +408 -0
- package/docs/articles/migrate-from-aws-api-gateway.md +248 -0
- package/docs/articles/migrate-from-azure-apim.md +292 -0
- package/docs/articles/migrate-from-kong.md +300 -0
- package/docs/articles/migration-overview.md +81 -0
- package/docs/articles/monetization/api-access.mdx +69 -0
- package/docs/articles/monetization/billing-models.md +520 -0
- package/docs/articles/monetization/developer-portal.md +167 -0
- package/docs/articles/monetization/features.mdx +98 -0
- package/docs/articles/monetization/index.mdx +113 -0
- package/docs/articles/monetization/meters.mdx +135 -0
- package/docs/articles/monetization/monetization-policy.md +314 -0
- package/docs/articles/monetization/plan-examples.mdx +366 -0
- package/docs/articles/monetization/plans.mdx +266 -0
- package/docs/articles/monetization/pricing-models.mdx +225 -0
- package/docs/articles/monetization/private-plans.md +154 -0
- package/docs/articles/monetization/quickstart.md +355 -0
- package/docs/articles/monetization/rate-cards.mdx +171 -0
- package/docs/articles/monetization/stripe-integration.md +195 -0
- package/docs/articles/monetization/subscription-lifecycle.md +298 -0
- package/docs/articles/monetization/tax-collection.md +166 -0
- package/docs/articles/monetization/troubleshooting.md +272 -0
- package/docs/articles/monetization-custom.mdx +71 -0
- package/docs/articles/monetization-integrations.mdx +104 -0
- package/docs/articles/monitoring-your-gateway.mdx +53 -0
- package/docs/articles/monorepo-deployment.mdx +350 -0
- package/docs/articles/multiple-auth-policies.mdx +81 -0
- package/docs/articles/non-standard-ports.mdx +30 -0
- package/docs/articles/oauth-authentication.mdx +54 -0
- package/docs/articles/openapi-server-urls.mdx +60 -0
- package/docs/articles/openapi.mdx +130 -0
- package/docs/articles/opentelemetry.mdx +250 -0
- package/docs/articles/per-user-rate-limits-using-db.mdx +112 -0
- package/docs/articles/performance-testing.mdx +304 -0
- package/docs/articles/plugin-akamai-api-security.mdx +76 -0
- package/docs/articles/plugin-azure-blob.mdx +73 -0
- package/docs/articles/plugin-azure-event-hubs.mdx +64 -0
- package/docs/articles/plugin-hydrolix-traffic-peak.mdx +147 -0
- package/docs/articles/policies.mdx +33 -0
- package/docs/articles/rename-or-move-project.mdx +39 -0
- package/docs/articles/rick-and-morty-api-developer-portal-example.mdx +23 -0
- package/docs/articles/routing.mdx +193 -0
- package/docs/articles/s3-signed-url-uploads.mdx +521 -0
- package/docs/articles/secure-tunnel.mdx +84 -0
- package/docs/articles/securing-backend-mtls.mdx +268 -0
- package/docs/articles/securing-your-backend.mdx +148 -0
- package/docs/articles/security.mdx +105 -0
- package/docs/articles/sharing-code-across-projects.mdx +412 -0
- package/docs/articles/source-control-setup-azure.mdx +13 -0
- package/docs/articles/source-control-setup-bitbucket.mdx +43 -0
- package/docs/articles/source-control-setup-github.mdx +172 -0
- package/docs/articles/source-control-setup-gitlab.mdx +12 -0
- package/docs/articles/source-control.mdx +80 -0
- package/docs/articles/step-1-setup-basic-gateway-local.mdx +136 -0
- package/docs/articles/step-1-setup-basic-gateway.mdx +118 -0
- package/docs/articles/step-2-add-rate-limiting-local.mdx +126 -0
- package/docs/articles/step-2-add-rate-limiting.mdx +82 -0
- package/docs/articles/step-3-add-api-key-auth-local.mdx +199 -0
- package/docs/articles/step-3-add-api-key-auth.mdx +166 -0
- package/docs/articles/step-4-deploying-to-the-edge.mdx +220 -0
- package/docs/articles/step-5-dynamic-rate-limiting.mdx +167 -0
- package/docs/articles/support.mdx +144 -0
- package/docs/articles/terraform.mdx +114 -0
- package/docs/articles/testing-graphql.mdx +34 -0
- package/docs/articles/testing.mdx +522 -0
- package/docs/articles/troubleshooting-slow-responses.mdx +301 -0
- package/docs/articles/troubleshooting.md +302 -0
- package/docs/articles/tsconfig.mdx +105 -0
- package/docs/articles/tunnel-setup.mdx +195 -0
- package/docs/articles/tunnel-troubleshooting.mdx +50 -0
- package/docs/articles/update-zup-in-github-action.mdx +110 -0
- package/docs/articles/use-openapi-extension-data.mdx +79 -0
- package/docs/articles/users/multifactor-authentication.mdx +64 -0
- package/docs/articles/users/profile.mdx +13 -0
- package/docs/articles/versioning-on-zuplo.mdx +89 -0
- package/docs/articles/waf-ddos-akamai.md +133 -0
- package/docs/articles/waf-ddos-aws-waf-shield.mdx +85 -0
- package/docs/articles/waf-ddos-fastly.mdx +251 -0
- package/docs/articles/waf-ddos.mdx +140 -0
- package/docs/articles/zuplo-waf.mdx +156 -0
- package/docs/ask.mdx +3 -0
- package/docs/cli/authentication.mdx +56 -0
- package/docs/cli/connectivity.mdx +38 -0
- package/docs/cli/create-zuplo-api.mdx +80 -0
- package/docs/cli/delete.mdx +79 -0
- package/docs/cli/deploy.mdx +156 -0
- package/docs/cli/deploy.partial.mdx +46 -0
- package/docs/cli/dev.mdx +115 -0
- package/docs/cli/docs.mdx +66 -0
- package/docs/cli/editor.mdx +50 -0
- package/docs/cli/global-options.mdx +19 -0
- package/docs/cli/init.mdx +74 -0
- package/docs/cli/link.mdx +74 -0
- package/docs/cli/list.mdx +55 -0
- package/docs/cli/mtls-certificate-create.mdx +94 -0
- package/docs/cli/mtls-certificate-delete.mdx +55 -0
- package/docs/cli/mtls-certificate-describe.mdx +55 -0
- package/docs/cli/mtls-certificate-disable.mdx +55 -0
- package/docs/cli/mtls-certificate-list.mdx +47 -0
- package/docs/cli/mtls-certificate-update.mdx +72 -0
- package/docs/cli/openapi-convert.mdx +111 -0
- package/docs/cli/openapi-merge.mdx +138 -0
- package/docs/cli/openapi-merge.partial.mdx +29 -0
- package/docs/cli/openapi-overlay.mdx +123 -0
- package/docs/cli/overview.mdx +78 -0
- package/docs/cli/project-create.mdx +43 -0
- package/docs/cli/source-migrate.mdx +18 -0
- package/docs/cli/source-upgrade.mdx +41 -0
- package/docs/cli/test.mdx +70 -0
- package/docs/cli/test.partial.mdx +7 -0
- package/docs/cli/tunnel-create.mdx +53 -0
- package/docs/cli/tunnel-create.partial.mdx +9 -0
- package/docs/cli/tunnel-delete.mdx +35 -0
- package/docs/cli/tunnel-delete.partial.mdx +9 -0
- package/docs/cli/tunnel-describe.mdx +45 -0
- package/docs/cli/tunnel-describe.partial.mdx +5 -0
- package/docs/cli/tunnel-list.mdx +35 -0
- package/docs/cli/tunnel-list.partial.mdx +9 -0
- package/docs/cli/tunnel-rate-token.partial.mdx +9 -0
- package/docs/cli/tunnel-rotate-token.mdx +39 -0
- package/docs/cli/tunnel-services-describe.mdx +45 -0
- package/docs/cli/tunnel-services-describe.partial.mdx +9 -0
- package/docs/cli/tunnel-services-update.mdx +48 -0
- package/docs/cli/variable-create.mdx +91 -0
- package/docs/cli/variable-create.partial.mdx +5 -0
- package/docs/cli/variable-update.mdx +75 -0
- package/docs/cli/variable-update.partial.mdx +5 -0
- package/docs/concepts/api-keys.md +146 -0
- package/docs/concepts/authentication.mdx +109 -0
- package/docs/concepts/how-zuplo-works.mdx +120 -0
- package/docs/concepts/project-structure.mdx +174 -0
- package/docs/concepts/rate-limiting.md +246 -0
- package/docs/concepts/request-lifecycle.mdx +56 -0
- package/docs/concepts/source-control-and-deployment.mdx +229 -0
- package/docs/conferences/conference-prize-terms.mdx +80 -0
- package/docs/dedicated/akamai/ai-powered-applications.mdx +223 -0
- package/docs/dedicated/akamai/architecture.mdx +280 -0
- package/docs/dedicated/akamai/caching.mdx +212 -0
- package/docs/dedicated/akamai/cdn.mdx +156 -0
- package/docs/dedicated/architecture.mdx +208 -0
- package/docs/dedicated/custom-domains.mdx +31 -0
- package/docs/dedicated/federated-gateways.mdx +80 -0
- package/docs/dedicated/networking.mdx +69 -0
- package/docs/dedicated/overview.mdx +80 -0
- package/docs/dedicated/source-control.mdx +63 -0
- package/docs/dev-portal/dev-portal-create-consumer-on-auth.mdx +134 -0
- package/docs/dev-portal/introduction.mdx +65 -0
- package/docs/dev-portal/local-development.mdx +72 -0
- package/docs/dev-portal/migration.mdx +526 -0
- package/docs/dev-portal/node-modules.mdx +45 -0
- package/docs/dev-portal/updating.mdx +28 -0
- package/docs/dev-portal/zudoku/components/alert.mdx +130 -0
- package/docs/dev-portal/zudoku/components/badge.mdx +70 -0
- package/docs/dev-portal/zudoku/components/button.mdx +132 -0
- package/docs/dev-portal/zudoku/components/callout.mdx +112 -0
- package/docs/dev-portal/zudoku/components/card.mdx +104 -0
- package/docs/dev-portal/zudoku/components/checkbox.mdx +72 -0
- package/docs/dev-portal/zudoku/components/client-only.mdx +79 -0
- package/docs/dev-portal/zudoku/components/code-tabs.mdx +179 -0
- package/docs/dev-portal/zudoku/components/dialog.mdx +167 -0
- package/docs/dev-portal/zudoku/components/head.mdx +199 -0
- package/docs/dev-portal/zudoku/components/icons.mdx +27 -0
- package/docs/dev-portal/zudoku/components/input.mdx +96 -0
- package/docs/dev-portal/zudoku/components/label.mdx +86 -0
- package/docs/dev-portal/zudoku/components/link.mdx +242 -0
- package/docs/dev-portal/zudoku/components/markdown.mdx +151 -0
- package/docs/dev-portal/zudoku/components/mermaid.mdx +81 -0
- package/docs/dev-portal/zudoku/components/playground.mdx +87 -0
- package/docs/dev-portal/zudoku/components/secret.mdx +78 -0
- package/docs/dev-portal/zudoku/components/select.mdx +176 -0
- package/docs/dev-portal/zudoku/components/shadcn.mdx +73 -0
- package/docs/dev-portal/zudoku/components/slider.mdx +108 -0
- package/docs/dev-portal/zudoku/components/slot.mdx +119 -0
- package/docs/dev-portal/zudoku/components/stepper.mdx +138 -0
- package/docs/dev-portal/zudoku/components/switch.mdx +96 -0
- package/docs/dev-portal/zudoku/components/syntax-highlight.mdx +602 -0
- package/docs/dev-portal/zudoku/components/textarea.mdx +78 -0
- package/docs/dev-portal/zudoku/components/tooltip.mdx +195 -0
- package/docs/dev-portal/zudoku/components/typography.mdx +61 -0
- package/docs/dev-portal/zudoku/configuration/ai-assistants.md +64 -0
- package/docs/dev-portal/zudoku/configuration/api-catalog.md +108 -0
- package/docs/dev-portal/zudoku/configuration/api-reference.md +397 -0
- package/docs/dev-portal/zudoku/configuration/authentication-auth0.md +173 -0
- package/docs/dev-portal/zudoku/configuration/authentication-azure-ad.md +238 -0
- package/docs/dev-portal/zudoku/configuration/authentication-clerk.md +110 -0
- package/docs/dev-portal/zudoku/configuration/authentication-firebase.md +61 -0
- package/docs/dev-portal/zudoku/configuration/authentication-pingfederate.md +136 -0
- package/docs/dev-portal/zudoku/configuration/authentication-supabase.md +225 -0
- package/docs/dev-portal/zudoku/configuration/authentication.md +199 -0
- package/docs/dev-portal/zudoku/configuration/build-configuration.mdx +147 -0
- package/docs/dev-portal/zudoku/configuration/docs.md +282 -0
- package/docs/dev-portal/zudoku/configuration/footer.mdx +214 -0
- package/docs/dev-portal/zudoku/configuration/llms.md +89 -0
- package/docs/dev-portal/zudoku/configuration/navigation.mdx +408 -0
- package/docs/dev-portal/zudoku/configuration/overview.md +380 -0
- package/docs/dev-portal/zudoku/configuration/protected-routes.md +149 -0
- package/docs/dev-portal/zudoku/configuration/search.md +169 -0
- package/docs/dev-portal/zudoku/configuration/sentry.mdx +44 -0
- package/docs/dev-portal/zudoku/configuration/site.md +124 -0
- package/docs/dev-portal/zudoku/configuration/slots.mdx +124 -0
- package/docs/dev-portal/zudoku/configuration/vite-config.md +18 -0
- package/docs/dev-portal/zudoku/custom-plugins.md +287 -0
- package/docs/dev-portal/zudoku/customization/colors-theme.mdx +275 -0
- package/docs/dev-portal/zudoku/customization/fonts.md +110 -0
- package/docs/dev-portal/zudoku/extending/events.md +124 -0
- package/docs/dev-portal/zudoku/guides/custom-pages.md +106 -0
- package/docs/dev-portal/zudoku/guides/environment-variables.md +99 -0
- package/docs/dev-portal/zudoku/guides/mermaid.mdx +70 -0
- package/docs/dev-portal/zudoku/guides/navigation-migration.md +87 -0
- package/docs/dev-portal/zudoku/guides/navigation-rules.mdx +197 -0
- package/docs/dev-portal/zudoku/guides/processors.mdx +234 -0
- package/docs/dev-portal/zudoku/guides/static-files.md +55 -0
- package/docs/dev-portal/zudoku/guides/transforming-examples.md +156 -0
- package/docs/dev-portal/zudoku/guides/using-multiple-apis.md +87 -0
- package/docs/dev-portal/zudoku/markdown/admonitions.md +128 -0
- package/docs/dev-portal/zudoku/markdown/code-blocks.md +196 -0
- package/docs/dev-portal/zudoku/markdown/frontmatter.md +172 -0
- package/docs/dev-portal/zudoku/markdown/mdx.md +68 -0
- package/docs/dev-portal/zudoku/markdown/overview.md +275 -0
- package/docs/dev-portal/zudoku/plugins.md +5 -0
- package/docs/dev-portal/zudoku/writing.mdx +72 -0
- package/docs/errors/bad-request.mdx +39 -0
- package/docs/errors/build-error.mdx +45 -0
- package/docs/errors/fatal-project-error.mdx +39 -0
- package/docs/errors/gateway-timeout.mdx +33 -0
- package/docs/errors/get-head-body-error.mdx +41 -0
- package/docs/errors/main-mod-error.mdx +40 -0
- package/docs/errors/no-project-set.mdx +41 -0
- package/docs/errors/not-found.mdx +43 -0
- package/docs/errors/rate-limit-exceeded.mdx +31 -0
- package/docs/errors/schema-validation-failed.mdx +51 -0
- package/docs/errors/system-configuration-error.mdx +44 -0
- package/docs/errors/unauthorized.mdx +50 -0
- package/docs/errors/unknown-error.mdx +42 -0
- package/docs/errors.mdx +14 -0
- package/docs/guides/canary-routing-for-employees.mdx +385 -0
- package/docs/guides/geolocation-backend-routing.mdx +404 -0
- package/docs/guides/modify-openapi-paths.mdx +371 -0
- package/docs/guides/openapi-overlays.mdx +492 -0
- package/docs/guides/overview.mdx +12 -0
- package/docs/guides/user-based-backend-routing.mdx +437 -0
- package/docs/handlers/aws-lambda.mdx +201 -0
- package/docs/handlers/custom-handler.mdx +112 -0
- package/docs/handlers/legacy-dev-portal-handler.mdx +135 -0
- package/docs/handlers/mcp-server.mdx +730 -0
- package/docs/handlers/openapi.mdx +78 -0
- package/docs/handlers/redirect.mdx +115 -0
- package/docs/handlers/system-handlers.mdx +41 -0
- package/docs/handlers/url-forward.mdx +204 -0
- package/docs/handlers/url-rewrite.mdx +224 -0
- package/docs/handlers/websocket-handler.mdx +154 -0
- package/docs/home.mdx +6 -0
- package/docs/managed-edge/overview.md +78 -0
- package/docs/mcp-server/configuration-migration-guide.mdx +344 -0
- package/docs/mcp-server/custom-tools.mdx +487 -0
- package/docs/mcp-server/graphql.mdx +241 -0
- package/docs/mcp-server/introduction.mdx +122 -0
- package/docs/mcp-server/openai-apps-sdk.mdx +160 -0
- package/docs/mcp-server/prompts.mdx +283 -0
- package/docs/mcp-server/resources.mdx +288 -0
- package/docs/mcp-server/testing.mdx +53 -0
- package/docs/mcp-server/tools.mdx +306 -0
- package/docs/policies/_index.md +92 -0
- package/docs/policies/ab-test-inbound/intro.md +8 -0
- package/docs/policies/ab-test-inbound/policy.ts +14 -0
- package/docs/policies/ab-test-inbound/schema.json +27 -0
- package/docs/policies/ab-test-outbound/intro.md +8 -0
- package/docs/policies/ab-test-outbound/policy.ts +26 -0
- package/docs/policies/ab-test-outbound/schema.json +27 -0
- package/docs/policies/acl-policy-inbound/intro.md +5 -0
- package/docs/policies/acl-policy-inbound/policy.ts +32 -0
- package/docs/policies/acl-policy-inbound/schema.json +52 -0
- package/docs/policies/akamai-ai-firewall/schema.json +98 -0
- package/docs/policies/amberflo-metering-inbound/doc.md +183 -0
- package/docs/policies/amberflo-metering-inbound/intro.md +20 -0
- package/docs/policies/amberflo-metering-inbound/schema.json +108 -0
- package/docs/policies/api-key-inbound/doc.md +77 -0
- package/docs/policies/api-key-inbound/intro.md +30 -0
- package/docs/policies/api-key-inbound/schema.json +84 -0
- package/docs/policies/archive-request-aws-s3-inbound/intro.md +4 -0
- package/docs/policies/archive-request-aws-s3-inbound/policy.ts +58 -0
- package/docs/policies/archive-request-aws-s3-inbound/schema.json +68 -0
- package/docs/policies/archive-request-azure-storage-inbound/doc.md +31 -0
- package/docs/policies/archive-request-azure-storage-inbound/intro.md +4 -0
- package/docs/policies/archive-request-azure-storage-inbound/policy.ts +54 -0
- package/docs/policies/archive-request-azure-storage-inbound/schema.json +53 -0
- package/docs/policies/archive-request-gcp-storage-inbound/doc.md +63 -0
- package/docs/policies/archive-request-gcp-storage-inbound/intro.md +4 -0
- package/docs/policies/archive-request-gcp-storage-inbound/policy.ts +68 -0
- package/docs/policies/archive-request-gcp-storage-inbound/schema.json +47 -0
- package/docs/policies/archive-response-aws-s3-outbound/intro.md +2 -0
- package/docs/policies/archive-response-aws-s3-outbound/policy.ts +59 -0
- package/docs/policies/archive-response-aws-s3-outbound/schema.json +68 -0
- package/docs/policies/archive-response-azure-storage-outbound/doc.md +31 -0
- package/docs/policies/archive-response-azure-storage-outbound/intro.md +3 -0
- package/docs/policies/archive-response-azure-storage-outbound/policy.ts +54 -0
- package/docs/policies/archive-response-azure-storage-outbound/schema.json +53 -0
- package/docs/policies/audit-log-inbound/doc.md +78 -0
- package/docs/policies/audit-log-inbound/intro.md +10 -0
- package/docs/policies/audit-log-inbound/schema.json +81 -0
- package/docs/policies/auth0-jwt-auth-inbound/doc.md +125 -0
- package/docs/policies/auth0-jwt-auth-inbound/intro.md +17 -0
- package/docs/policies/auth0-jwt-auth-inbound/schema.json +74 -0
- package/docs/policies/authzen-inbound/doc.md +24 -0
- package/docs/policies/authzen-inbound/intro.md +31 -0
- package/docs/policies/authzen-inbound/schema.json +126 -0
- package/docs/policies/axiomatics-authz-inbound/doc.md +144 -0
- package/docs/policies/axiomatics-authz-inbound/intro.md +11 -0
- package/docs/policies/axiomatics-authz-inbound/schema.json +161 -0
- package/docs/policies/basic-auth-inbound/intro.md +9 -0
- package/docs/policies/basic-auth-inbound/schema.json +99 -0
- package/docs/policies/bot-detection-inbound/intro.md +4 -0
- package/docs/policies/bot-detection-inbound/schema.json +56 -0
- package/docs/policies/brownout-inbound/doc.md +55 -0
- package/docs/policies/brownout-inbound/intro.md +12 -0
- package/docs/policies/brownout-inbound/schema.json +115 -0
- package/docs/policies/caching-inbound/doc.md +209 -0
- package/docs/policies/caching-inbound/intro.md +23 -0
- package/docs/policies/caching-inbound/schema.json +98 -0
- package/docs/policies/change-method-inbound/schema.json +56 -0
- package/docs/policies/clear-headers-inbound/schema.json +59 -0
- package/docs/policies/clear-headers-outbound/schema.json +59 -0
- package/docs/policies/clerk-jwt-auth-inbound/doc.md +85 -0
- package/docs/policies/clerk-jwt-auth-inbound/intro.md +4 -0
- package/docs/policies/clerk-jwt-auth-inbound/schema.json +68 -0
- package/docs/policies/cognito-jwt-auth-inbound/intro.md +7 -0
- package/docs/policies/cognito-jwt-auth-inbound/schema.json +74 -0
- package/docs/policies/comet-opik-tracing-inbound/schema.json +65 -0
- package/docs/policies/complex-rate-limit-inbound/doc.md +20 -0
- package/docs/policies/complex-rate-limit-inbound/intro.md +23 -0
- package/docs/policies/complex-rate-limit-inbound/schema.json +142 -0
- package/docs/policies/composite-inbound/doc.md +69 -0
- package/docs/policies/composite-inbound/intro.md +15 -0
- package/docs/policies/composite-inbound/schema.json +59 -0
- package/docs/policies/composite-outbound/intro.md +6 -0
- package/docs/policies/composite-outbound/schema.json +59 -0
- package/docs/policies/curity-phantom-token-inbound/doc.md +109 -0
- package/docs/policies/curity-phantom-token-inbound/intro.md +3 -0
- package/docs/policies/curity-phantom-token-inbound/schema.json +68 -0
- package/docs/policies/custom-code-inbound/doc.md +267 -0
- package/docs/policies/custom-code-inbound/intro.md +2 -0
- package/docs/policies/custom-code-inbound/schema.json +48 -0
- package/docs/policies/custom-code-outbound/doc.md +235 -0
- package/docs/policies/custom-code-outbound/intro.md +2 -0
- package/docs/policies/custom-code-outbound/schema.json +43 -0
- package/docs/policies/firebase-jwt-inbound/intro.md +6 -0
- package/docs/policies/firebase-jwt-inbound/schema.json +68 -0
- package/docs/policies/formdata-to-json-inbound/schema.json +60 -0
- package/docs/policies/galileo-tracing-inbound/schema.json +65 -0
- package/docs/policies/geo-filter-inbound/doc.md +33 -0
- package/docs/policies/geo-filter-inbound/schema.json +108 -0
- package/docs/policies/graphql-complexity-limit-inbound/doc.md +48 -0
- package/docs/policies/graphql-complexity-limit-inbound/intro.md +2 -0
- package/docs/policies/graphql-complexity-limit-inbound/schema.json +90 -0
- package/docs/policies/graphql-disable-introspection-inbound/doc.md +66 -0
- package/docs/policies/graphql-disable-introspection-inbound/intro.md +15 -0
- package/docs/policies/graphql-disable-introspection-inbound/schema.json +48 -0
- package/docs/policies/graphql-introspection-filter-outbound/doc.md +148 -0
- package/docs/policies/graphql-introspection-filter-outbound/schema.json +79 -0
- package/docs/policies/hmac-auth-inbound/doc.md +30 -0
- package/docs/policies/hmac-auth-inbound/intro.md +10 -0
- package/docs/policies/hmac-auth-inbound/policy.ts +70 -0
- package/docs/policies/hmac-auth-inbound/schema.json +53 -0
- package/docs/policies/http-deprecation-outbound/doc.md +73 -0
- package/docs/policies/http-deprecation-outbound/schema.json +83 -0
- package/docs/policies/ip-restriction-inbound/intro.md +8 -0
- package/docs/policies/ip-restriction-inbound/policy.ts +40 -0
- package/docs/policies/ip-restriction-inbound/schema.json +58 -0
- package/docs/policies/jwt-scopes-inbound/schema.json +59 -0
- package/docs/policies/ldap-auth-inbound/schema.json +56 -0
- package/docs/policies/mock-api-inbound/schema.json +72 -0
- package/docs/policies/moesif-inbound/doc.md +44 -0
- package/docs/policies/moesif-inbound/intro.md +6 -0
- package/docs/policies/moesif-inbound/schema.json +68 -0
- package/docs/policies/monetization-inbound/doc.md +87 -0
- package/docs/policies/monetization-inbound/intro.md +6 -0
- package/docs/policies/monetization-inbound/schema.json +102 -0
- package/docs/policies/mtls-auth-inbound/intro.md +6 -0
- package/docs/policies/mtls-auth-inbound/schema.json +68 -0
- package/docs/policies/okta-fga-authz-inbound/doc.md +181 -0
- package/docs/policies/okta-fga-authz-inbound/intro.md +20 -0
- package/docs/policies/okta-fga-authz-inbound/schema.json +104 -0
- package/docs/policies/okta-jwt-auth-inbound/intro.md +7 -0
- package/docs/policies/okta-jwt-auth-inbound/schema.json +74 -0
- package/docs/policies/open-id-jwt-auth-inbound/doc.md +58 -0
- package/docs/policies/open-id-jwt-auth-inbound/intro.md +30 -0
- package/docs/policies/open-id-jwt-auth-inbound/schema.json +128 -0
- package/docs/policies/openfga-authz-inbound/doc.md +207 -0
- package/docs/policies/openfga-authz-inbound/intro.md +17 -0
- package/docs/policies/openfga-authz-inbound/schema.json +191 -0
- package/docs/policies/openmeter-inbound/doc.md +163 -0
- package/docs/policies/openmeter-inbound/intro.md +18 -0
- package/docs/policies/openmeter-inbound/schema.json +183 -0
- package/docs/policies/prompt-injection-outbound/doc.md +106 -0
- package/docs/policies/prompt-injection-outbound/intro.md +4 -0
- package/docs/policies/prompt-injection-outbound/schema.json +74 -0
- package/docs/policies/propel-auth-jwt-inbound/doc.md +88 -0
- package/docs/policies/propel-auth-jwt-inbound/intro.md +4 -0
- package/docs/policies/propel-auth-jwt-inbound/schema.json +74 -0
- package/docs/policies/query-param-to-header-inbound/doc.md +70 -0
- package/docs/policies/query-param-to-header-inbound/intro.md +5 -0
- package/docs/policies/query-param-to-header-inbound/schema.json +74 -0
- package/docs/policies/quota-inbound/doc.md +235 -0
- package/docs/policies/quota-inbound/intro.md +7 -0
- package/docs/policies/quota-inbound/schema.json +133 -0
- package/docs/policies/rate-limit-inbound/doc.md +78 -0
- package/docs/policies/rate-limit-inbound/intro.md +30 -0
- package/docs/policies/rate-limit-inbound/schema.json +134 -0
- package/docs/policies/rbac-policy-inbound/intro.md +3 -0
- package/docs/policies/rbac-policy-inbound/policy.ts +42 -0
- package/docs/policies/rbac-policy-inbound/schema.json +52 -0
- package/docs/policies/readme-metrics-inbound/doc.md +1 -0
- package/docs/policies/readme-metrics-inbound/intro.md +3 -0
- package/docs/policies/readme-metrics-inbound/schema.json +84 -0
- package/docs/policies/remove-headers-inbound/schema.json +59 -0
- package/docs/policies/remove-headers-outbound/schema.json +59 -0
- package/docs/policies/remove-query-params-inbound/schema.json +59 -0
- package/docs/policies/replace-string-outbound/schema.json +69 -0
- package/docs/policies/request-size-limit-inbound/schema.json +60 -0
- package/docs/policies/request-validation-inbound/doc.md +72 -0
- package/docs/policies/request-validation-inbound/intro.md +24 -0
- package/docs/policies/request-validation-inbound/schema.json +98 -0
- package/docs/policies/require-origin-inbound/intro.md +12 -0
- package/docs/policies/require-origin-inbound/schema.json +65 -0
- package/docs/policies/secret-masking-outbound/doc.md +41 -0
- package/docs/policies/secret-masking-outbound/intro.md +13 -0
- package/docs/policies/secret-masking-outbound/schema.json +65 -0
- package/docs/policies/semantic-cache-inbound/doc.md +63 -0
- package/docs/policies/semantic-cache-inbound/intro.md +4 -0
- package/docs/policies/semantic-cache-inbound/schema.json +179 -0
- package/docs/policies/set-body-inbound/intro.md +7 -0
- package/docs/policies/set-body-inbound/schema.json +56 -0
- package/docs/policies/set-headers-inbound/doc.md +41 -0
- package/docs/policies/set-headers-inbound/intro.md +2 -0
- package/docs/policies/set-headers-inbound/schema.json +83 -0
- package/docs/policies/set-headers-outbound/schema.json +83 -0
- package/docs/policies/set-query-params-inbound/schema.json +83 -0
- package/docs/policies/set-status-outbound/schema.json +62 -0
- package/docs/policies/sleep-inbound/schema.json +56 -0
- package/docs/policies/stripe-webhook-verification-inbound/intro.md +2 -0
- package/docs/policies/stripe-webhook-verification-inbound/schema.json +60 -0
- package/docs/policies/supabase-jwt-auth-inbound/doc.md +29 -0
- package/docs/policies/supabase-jwt-auth-inbound/intro.md +12 -0
- package/docs/policies/supabase-jwt-auth-inbound/schema.json +86 -0
- package/docs/policies/transform-body-inbound/intro.md +8 -0
- package/docs/policies/transform-body-inbound/policy.ts +16 -0
- package/docs/policies/transform-body-inbound/schema.json +27 -0
- package/docs/policies/transform-body-outbound/intro.md +8 -0
- package/docs/policies/transform-body-outbound/policy.ts +19 -0
- package/docs/policies/transform-body-outbound/schema.json +27 -0
- package/docs/policies/upstream-azure-ad-service-auth-inbound/doc.md +82 -0
- package/docs/policies/upstream-azure-ad-service-auth-inbound/intro.md +20 -0
- package/docs/policies/upstream-azure-ad-service-auth-inbound/schema.json +84 -0
- package/docs/policies/upstream-firebase-admin-auth-inbound/intro.md +10 -0
- package/docs/policies/upstream-firebase-admin-auth-inbound/schema.json +68 -0
- package/docs/policies/upstream-firebase-user-auth-inbound/intro.md +2 -0
- package/docs/policies/upstream-firebase-user-auth-inbound/schema.json +113 -0
- package/docs/policies/upstream-gcp-federated-auth-inbound/doc.md +139 -0
- package/docs/policies/upstream-gcp-federated-auth-inbound/intro.md +21 -0
- package/docs/policies/upstream-gcp-federated-auth-inbound/schema.json +96 -0
- package/docs/policies/upstream-gcp-jwt-inbound/intro.md +10 -0
- package/docs/policies/upstream-gcp-jwt-inbound/schema.json +62 -0
- package/docs/policies/upstream-gcp-service-auth-inbound/doc.md +132 -0
- package/docs/policies/upstream-gcp-service-auth-inbound/intro.md +25 -0
- package/docs/policies/upstream-gcp-service-auth-inbound/schema.json +95 -0
- package/docs/policies/upstream-zuplo-jwt-auth-inbound/doc.md +213 -0
- package/docs/policies/upstream-zuplo-jwt-auth-inbound/intro.md +16 -0
- package/docs/policies/upstream-zuplo-jwt-auth-inbound/schema.json +101 -0
- package/docs/policies/validate-json-schema-inbound/doc.md +129 -0
- package/docs/policies/validate-json-schema-inbound/intro.md +7 -0
- package/docs/policies/validate-json-schema-inbound/schema.json +56 -0
- package/docs/policies/web-bot-auth-inbound/doc.md +104 -0
- package/docs/policies/web-bot-auth-inbound/intro.md +16 -0
- package/docs/policies/web-bot-auth-inbound/schema.json +76 -0
- package/docs/policies/xml-to-json-outbound/doc.md +71 -0
- package/docs/policies/xml-to-json-outbound/intro.md +4 -0
- package/docs/policies/xml-to-json-outbound/schema.json +117 -0
- package/docs/programmable-api/audit-log.mdx +74 -0
- package/docs/programmable-api/background-dispatcher.mdx +124 -0
- package/docs/programmable-api/background-loader.mdx +104 -0
- package/docs/programmable-api/cache.mdx +186 -0
- package/docs/programmable-api/compatibility-dates.mdx +201 -0
- package/docs/programmable-api/console-logging.mdx +48 -0
- package/docs/programmable-api/context-data.mdx +127 -0
- package/docs/programmable-api/custom-cors-policy.mdx +64 -0
- package/docs/programmable-api/environment.mdx +328 -0
- package/docs/programmable-api/hooks.mdx +569 -0
- package/docs/programmable-api/http-problems.mdx +385 -0
- package/docs/programmable-api/jwt-service-plugin.mdx +420 -0
- package/docs/programmable-api/logger.mdx +223 -0
- package/docs/programmable-api/memory-zone-read-through-cache.mdx +96 -0
- package/docs/programmable-api/node-modules.mdx +67 -0
- package/docs/programmable-api/not-found-handler.mdx +47 -0
- package/docs/programmable-api/oauth-protected-resource-plugin.mdx +46 -0
- package/docs/programmable-api/overview.mdx +213 -0
- package/docs/programmable-api/problem-response-formatter.mdx +183 -0
- package/docs/programmable-api/request-user.mdx +289 -0
- package/docs/programmable-api/reusing-code.mdx +26 -0
- package/docs/programmable-api/route-raw.mdx +55 -0
- package/docs/programmable-api/runtime-behaviors.mdx +25 -0
- package/docs/programmable-api/runtime-errors.mdx +246 -0
- package/docs/programmable-api/runtime-extensions.mdx +340 -0
- package/docs/programmable-api/safely-clone-a-request-or-response.mdx +57 -0
- package/docs/programmable-api/streaming-zone-cache.mdx +155 -0
- package/docs/programmable-api/web-crypto-apis.mdx +219 -0
- package/docs/programmable-api/web-standard-apis.mdx +109 -0
- package/docs/programmable-api/zone-cache.mdx +131 -0
- package/docs/programmable-api/zp-body-removed.mdx +32 -0
- package/docs/programmable-api/zuplo-context.mdx +414 -0
- package/docs/programmable-api/zuplo-id-token.mdx +90 -0
- package/docs/programmable-api/zuplo-json.mdx +91 -0
- package/docs/programmable-api/zuplo-request.mdx +200 -0
- package/docs/sample-apis.mdx +78 -0
- package/docs/self-hosted/overview.md +60 -0
- package/package.json +6 -5
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: MCP Server GraphQL Endpoints
|
|
3
|
+
sidebar_label: GraphQL
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
The MCP Server Handler supports GraphQL endpoints through the `x-zuplo-route`
|
|
7
|
+
OpenAPI extension. This allows you to expose GraphQL APIs as MCP tools with
|
|
8
|
+
automatic schema introspection and query execution capabilities.
|
|
9
|
+
|
|
10
|
+
When you configure a route with the GraphQL extension, the MCP server
|
|
11
|
+
automatically generates two tools:
|
|
12
|
+
|
|
13
|
+
1. **Introspection tool** - Fetches the GraphQL schema so AI systems can
|
|
14
|
+
understand available queries, mutations, and types
|
|
15
|
+
2. **Execute tool** - Executes GraphQL queries against the endpoint
|
|
16
|
+
|
|
17
|
+
This enables AI systems to dynamically discover and interact with GraphQL APIs
|
|
18
|
+
without requiring manual tool definitions for each query.
|
|
19
|
+
|
|
20
|
+
:::caution
|
|
21
|
+
|
|
22
|
+
GraphQL endpoint support for MCP Server is currently in beta. The API may change
|
|
23
|
+
in future releases.
|
|
24
|
+
|
|
25
|
+
:::
|
|
26
|
+
|
|
27
|
+
## Quick Start
|
|
28
|
+
|
|
29
|
+
### 1. Configure a GraphQL Endpoint
|
|
30
|
+
|
|
31
|
+
Add a route that forwards to your GraphQL endpoint and include the
|
|
32
|
+
`x-zuplo-route.mcp` configuration:
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{
|
|
36
|
+
"openapi": "3.1.0",
|
|
37
|
+
"info": {
|
|
38
|
+
"version": "1.0.0"
|
|
39
|
+
},
|
|
40
|
+
"paths": {
|
|
41
|
+
"/graphql": {
|
|
42
|
+
"post": {
|
|
43
|
+
"operationId": "graphql",
|
|
44
|
+
"summary": "GraphQL API endpoint",
|
|
45
|
+
"x-zuplo-route": {
|
|
46
|
+
"handler": {
|
|
47
|
+
"export": "urlForwardHandler",
|
|
48
|
+
"module": "$import(@zuplo/runtime)",
|
|
49
|
+
"options": {
|
|
50
|
+
"baseUrl": "https://api.example.com",
|
|
51
|
+
"followRedirects": true
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"mcp": {
|
|
55
|
+
"type": "graphql"
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### 2. Add to Your MCP Server
|
|
65
|
+
|
|
66
|
+
Include the GraphQL route in your MCP Server configuration using the
|
|
67
|
+
`operations` array:
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"paths": {
|
|
72
|
+
"/mcp": {
|
|
73
|
+
"post": {
|
|
74
|
+
"summary": "MCP server",
|
|
75
|
+
"operationId": "mcp-server",
|
|
76
|
+
"x-zuplo-route": {
|
|
77
|
+
"corsPolicy": "none",
|
|
78
|
+
"handler": {
|
|
79
|
+
"export": "mcpServerHandler",
|
|
80
|
+
"module": "$import(@zuplo/runtime)",
|
|
81
|
+
"options": {
|
|
82
|
+
"name": "My MCP Server",
|
|
83
|
+
"version": "1.0.0",
|
|
84
|
+
"operations": [
|
|
85
|
+
{
|
|
86
|
+
"file": "./config/routes.oas.json",
|
|
87
|
+
"id": "graphql"
|
|
88
|
+
}
|
|
89
|
+
]
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
This configuration automatically creates:
|
|
100
|
+
|
|
101
|
+
- `graphql_introspect` - Tool to fetch the GraphQL schema
|
|
102
|
+
- `graphql_execute` - Tool to execute GraphQL queries
|
|
103
|
+
|
|
104
|
+
## Configuration Options
|
|
105
|
+
|
|
106
|
+
The `x-zuplo-route.mcp` configuration for GraphQL supports the following
|
|
107
|
+
options:
|
|
108
|
+
|
|
109
|
+
- `type`: Must be set to `"graphql"`
|
|
110
|
+
- `enabled`: Whether the GraphQL MCP capabilities are enabled (default: `true`).
|
|
111
|
+
- `introspectionTool`: Configuration for the introspection tool.
|
|
112
|
+
- `name`: Custom name for the introspection tool.
|
|
113
|
+
- `description`: Custom description for the introspection tool.
|
|
114
|
+
- `executeTool`: Configuration for the execute tool.
|
|
115
|
+
- `name`: Custom name for the execute tool.
|
|
116
|
+
- `description`: Custom description for the execute tool.
|
|
117
|
+
|
|
118
|
+
For example:
|
|
119
|
+
|
|
120
|
+
```json
|
|
121
|
+
{
|
|
122
|
+
"paths": {
|
|
123
|
+
"/graphql": {
|
|
124
|
+
"post": {
|
|
125
|
+
"operationId": "github_graphql",
|
|
126
|
+
"x-zuplo-route": {
|
|
127
|
+
"handler": {
|
|
128
|
+
"export": "urlForwardHandler",
|
|
129
|
+
"module": "$import(@zuplo/runtime)",
|
|
130
|
+
"options": {
|
|
131
|
+
"baseUrl": "https://api.github.com"
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
"mcp": {
|
|
135
|
+
"type": "graphql",
|
|
136
|
+
"introspectionTool": {
|
|
137
|
+
"name": "github_schema",
|
|
138
|
+
"description": "Fetch the GitHub GraphQL schema"
|
|
139
|
+
},
|
|
140
|
+
"executeTool": {
|
|
141
|
+
"name": "github_query",
|
|
142
|
+
"description": "Execute a query against the GitHub GraphQL API"
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## Custom GraphQL Tools
|
|
153
|
+
|
|
154
|
+
For more complex scenarios like bounded mutations or queries with complex logic,
|
|
155
|
+
you can create custom GraphQL tools as endpoints using the Zuplo
|
|
156
|
+
[custom MCP tool patterns](./custom-tools.mdx) and the `graphql` library.
|
|
157
|
+
|
|
158
|
+
Here's a simple example of a custom bounded GraphQL query that expects an `id`
|
|
159
|
+
input from the MCP client:
|
|
160
|
+
|
|
161
|
+
```json
|
|
162
|
+
{
|
|
163
|
+
"paths": {
|
|
164
|
+
"/graphql/ship": {
|
|
165
|
+
"post": {
|
|
166
|
+
"summary": "Get details about a specific ship",
|
|
167
|
+
"operationId": "get_ship",
|
|
168
|
+
"requestBody": {
|
|
169
|
+
"required": true,
|
|
170
|
+
"content": {
|
|
171
|
+
"application/json": {
|
|
172
|
+
"schema": {
|
|
173
|
+
"type": "object",
|
|
174
|
+
"required": ["id"],
|
|
175
|
+
"properties": {
|
|
176
|
+
"id": {
|
|
177
|
+
"type": "string",
|
|
178
|
+
"description": "The ID of the ship to query"
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
},
|
|
185
|
+
"x-zuplo-route": {
|
|
186
|
+
"handler": {
|
|
187
|
+
"export": "default",
|
|
188
|
+
"module": "$import(./modules/get-ship)"
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
In your handler (`modules/get-ship.ts`):
|
|
198
|
+
|
|
199
|
+
```typescript
|
|
200
|
+
import { ZuploContext, ZuploRequest } from "@zuplo/runtime";
|
|
201
|
+
|
|
202
|
+
export default async function handler(
|
|
203
|
+
request: ZuploRequest,
|
|
204
|
+
context: ZuploContext,
|
|
205
|
+
) {
|
|
206
|
+
const { id } = await request.json();
|
|
207
|
+
|
|
208
|
+
const query = `
|
|
209
|
+
query GetShip($id: ID!) {
|
|
210
|
+
ship(id: $id) {
|
|
211
|
+
name
|
|
212
|
+
model
|
|
213
|
+
manufacturer
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
`;
|
|
217
|
+
|
|
218
|
+
const response = await fetch("https://api.example.com/graphql", {
|
|
219
|
+
method: "POST",
|
|
220
|
+
headers: {
|
|
221
|
+
"Content-Type": "application/json",
|
|
222
|
+
},
|
|
223
|
+
body: JSON.stringify({
|
|
224
|
+
query,
|
|
225
|
+
variables: { id },
|
|
226
|
+
}),
|
|
227
|
+
});
|
|
228
|
+
|
|
229
|
+
return response;
|
|
230
|
+
}
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
For more complex custom tools with validation, error handling, and multi-step
|
|
234
|
+
workflows, see the [Custom Tools documentation](./custom-tools.mdx).
|
|
235
|
+
|
|
236
|
+
## See Also
|
|
237
|
+
|
|
238
|
+
- [MCP Server Handler](./introduction.mdx) - Main MCP Server documentation
|
|
239
|
+
- [Custom Tools](./custom-tools.mdx) - Build custom MCP tools with complex logic
|
|
240
|
+
- [GraphQL Best Practices](https://graphql.org/learn/best-practices/) -
|
|
241
|
+
GraphQL.org recommendations
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Model Context Protocol (MCP)
|
|
3
|
+
sidebar_label: Introduction
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
[Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction) is
|
|
7
|
+
an open protocol that enables controlled interactions between AI systems and
|
|
8
|
+
agents. It enables external tools and data sources to be utilized and read by AI
|
|
9
|
+
agents that implement the protocol.
|
|
10
|
+
|
|
11
|
+
Developed by Anthropic, MCP standardizes how AI applications can connect to a
|
|
12
|
+
robust number of services while maintaining user control.
|
|
13
|
+
|
|
14
|
+
## What's MCP?
|
|
15
|
+
|
|
16
|
+
MCP acts as a bridge between AI systems (like Cursor, Claude Desktop, ChatGPT,
|
|
17
|
+
or other LLMs) and external resources such as:
|
|
18
|
+
|
|
19
|
+
- APIs and databases
|
|
20
|
+
- File systems and cloud storage
|
|
21
|
+
- Development tools and services
|
|
22
|
+
- Custom business backends and workflows
|
|
23
|
+
|
|
24
|
+
The protocol ensures that AI interactions with external systems are:
|
|
25
|
+
|
|
26
|
+
- **Auditable**: Full visibility into what tools are accessed and how they're
|
|
27
|
+
used via a simple [JSON-RPC 2.0](https://www.jsonrpc.org/specification)
|
|
28
|
+
message flow.
|
|
29
|
+
- **Standardized**: Consistent interface across different tools, servers,
|
|
30
|
+
clients, languages, and services.
|
|
31
|
+
|
|
32
|
+
## How Zuplo Enables MCP
|
|
33
|
+
|
|
34
|
+
Zuplo's MCP Server Handler provides a perfect foundation for MCP implementations
|
|
35
|
+
by:
|
|
36
|
+
|
|
37
|
+
1. **Unified API Interface**: Transform any backend API service into a
|
|
38
|
+
standardized MCP-compatible server
|
|
39
|
+
2. **Security & Control**: Built-in authentication, rate limiting, and access
|
|
40
|
+
controls
|
|
41
|
+
3. **Monitoring & Analytics**: Full observability into AI tool usage and
|
|
42
|
+
performance
|
|
43
|
+
4. **Developer Experience**: Easy configuration and deployment using your
|
|
44
|
+
existing OpenAPI specifications
|
|
45
|
+
|
|
46
|
+
The MCP Server Handler transforms your existing Zuplo API gateway into a
|
|
47
|
+
powerful toolset that AI systems can discover, understand, and invoke - bringing
|
|
48
|
+
AI capabilities directly into your business workflows!
|
|
49
|
+
|
|
50
|
+
## MCP Implementation Options
|
|
51
|
+
|
|
52
|
+
Zuplo provides two approaches for implementing MCP servers:
|
|
53
|
+
|
|
54
|
+
### 1. MCP Server Handler: Transform Routes into AI Tools
|
|
55
|
+
|
|
56
|
+
The MCP Server Handler automatically transforms your API gateway routes into MCP
|
|
57
|
+
tools that AI systems can discover and use.
|
|
58
|
+
|
|
59
|
+
#### How It Works
|
|
60
|
+
|
|
61
|
+
The MCP Server Handler:
|
|
62
|
+
|
|
63
|
+
1. **Route Discovery**: Automatically exposes your Zuplo routes as discoverable
|
|
64
|
+
MCP tools
|
|
65
|
+
2. **OpenAPI Integration**: Uses your existing OpenAPI specifications to provide
|
|
66
|
+
tool descriptions
|
|
67
|
+
3. **Secure Access**: Leverages Zuplo's authentication and authorization
|
|
68
|
+
policies
|
|
69
|
+
4. **Real-time Execution**: AI systems can invoke your routes as tools in
|
|
70
|
+
real-time
|
|
71
|
+
|
|
72
|
+
#### Example Use Cases
|
|
73
|
+
|
|
74
|
+
##### Customer Service AI Tools
|
|
75
|
+
|
|
76
|
+
Transform your customer management APIs into AI tools:
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
- GET /customers/{id} → "Get customer information for user 123"
|
|
80
|
+
- POST /tickets → "Create a support ticket with the following ..."
|
|
81
|
+
- PUT /customers/{id}/status → "Update customer 123 status ..."
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
##### E-commerce AI Assistant
|
|
85
|
+
|
|
86
|
+
Expose your e-commerce APIs as shopping tools:
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
- GET /products/search → "Search for products ..."
|
|
90
|
+
- POST /cart/add → "Add item to cart"
|
|
91
|
+
- GET /orders/{id} → "Get order status"
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
##### DevOps Automation
|
|
95
|
+
|
|
96
|
+
Make your infrastructure APIs available to AI:
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
- GET /deployments → "List deployments"
|
|
100
|
+
- POST /deployments → "Create new deployment"
|
|
101
|
+
- GET /metrics → "Get system metrics"
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
#### Security Considerations
|
|
105
|
+
|
|
106
|
+
When exposing routes as MCP tools:
|
|
107
|
+
|
|
108
|
+
1. **Apply appropriate authentication policies** to ensure only authorized AI
|
|
109
|
+
systems can access your tools
|
|
110
|
+
2. **Use rate limiting** to prevent abuse and control usage costs
|
|
111
|
+
3. **Implement audit logging** to track tool usage and maintain compliance
|
|
112
|
+
4. **Scope permissions carefully** - only expose routes and OpenAPI specs that
|
|
113
|
+
should be accessible to AI systems
|
|
114
|
+
|
|
115
|
+
## Learn More
|
|
116
|
+
|
|
117
|
+
- [MCP Server Handler Technical Documentation](../handlers/mcp-server.mdx)
|
|
118
|
+
- [MCP Tools Documentation](./tools.mdx)
|
|
119
|
+
- [MCP Prompts Documentation](./prompts.mdx)
|
|
120
|
+
- [MCP Resources Documentation](./resources.mdx)
|
|
121
|
+
- [MCP Custom Tools Documentation](./custom-tools.mdx)
|
|
122
|
+
- [Model Context Protocol Specification](https://spec.modelcontextprotocol.io/)
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: MCP Server With OpenAI Apps SDK
|
|
3
|
+
sidebar_label: OpenAI Apps SDK
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
The [OpenAI Apps SDK](https://developers.openai.com/apps-sdk) is an integration
|
|
7
|
+
of MCP that lets you expose applications to ChatGPT. Zuplo's MCP Server provides
|
|
8
|
+
built-in support for the Apps SDK through `tools`, `resources`, and the
|
|
9
|
+
`ZuploMcpSdk` class, which allows you to optionally access incoming request
|
|
10
|
+
metadata and set response metadata required for ChatGPT widget rendering.
|
|
11
|
+
|
|
12
|
+
:::warning
|
|
13
|
+
|
|
14
|
+
The OpenAI Apps SDK and support for it in Zuplo's `mcpServerHandler` is in beta
|
|
15
|
+
and subject to change!
|
|
16
|
+
|
|
17
|
+
:::
|
|
18
|
+
|
|
19
|
+
## `tools`
|
|
20
|
+
|
|
21
|
+
MCP tools define the functionality of your app. Zuplo MCP servers support tools
|
|
22
|
+
for the OpenAI Apps SDK with `_meta` metadata through the `x-zuplo-route.mcp`
|
|
23
|
+
configuration. Learn more about configuration options for `tools` in
|
|
24
|
+
[the MCP Server Tools documentation](./tools.mdx).
|
|
25
|
+
|
|
26
|
+
## `resources`
|
|
27
|
+
|
|
28
|
+
MCP resources are how your app's sandboxed widgets are displayed in the chat
|
|
29
|
+
interface. Zuplo MCP servers support resources for the OpenAI Apps SDK with
|
|
30
|
+
`_meta` metadata through the `x-zuplo-route.mcp` configuration. Learn more about
|
|
31
|
+
configuration options for `resources` in
|
|
32
|
+
[the MCP Server Resources documentation](./resources.mdx).
|
|
33
|
+
|
|
34
|
+
## Configuring metadata
|
|
35
|
+
|
|
36
|
+
When configuring and describing your tools and resources, you may need to set
|
|
37
|
+
specific `annotations` and static `_meta` for when ChatGPT inspects these
|
|
38
|
+
entities. `_meta` is the main way that the OpenAI Apps SDK interfaces with an
|
|
39
|
+
MCP server. For example, an application may want to set a `readOnlyHint`
|
|
40
|
+
annotation on a tool and define that the tool renders a component for your
|
|
41
|
+
application with the static `_meta["openai/outputTemplate"]` metadata:
|
|
42
|
+
|
|
43
|
+
```json
|
|
44
|
+
"x-zuplo-route": {
|
|
45
|
+
"corsPolicy": "none",
|
|
46
|
+
"handler": {
|
|
47
|
+
"export": "default",
|
|
48
|
+
"module": "$import(./modules/weather)"
|
|
49
|
+
},
|
|
50
|
+
"mcp": {
|
|
51
|
+
"type": "tool",
|
|
52
|
+
"name": "get_current_weather",
|
|
53
|
+
"description": "Retrieve and render application weather component",
|
|
54
|
+
"annotations": {
|
|
55
|
+
"readOnlyHint": true
|
|
56
|
+
},
|
|
57
|
+
"_meta": {
|
|
58
|
+
"openai/toolInvocation/invoking": "Getting weather ...",
|
|
59
|
+
"openai/toolInvocation/invoked": "Weather ready!",
|
|
60
|
+
"openai/outputTemplate": "ui://widget/weather.html"
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
The resource defined at `ui://widget/weather.html` can then be used to render
|
|
67
|
+
the app. Learn more about this in
|
|
68
|
+
[the Zuplo MCP Server Tools documentation](./tools.mdx),
|
|
69
|
+
[the OpenAI Apps SDK documentation for defining tools](https://developers.openai.com/apps-sdk/plan/tools)
|
|
70
|
+
and
|
|
71
|
+
[the OpenAI Apps SDK documentation for setting up tools and resources](https://developers.openai.com/apps-sdk/build/mcp-server).
|
|
72
|
+
|
|
73
|
+
## `ZuploMcpSdk`
|
|
74
|
+
|
|
75
|
+
The `ZuploMcpSdk` class in the `@zuplo/runtime` provides methods to interact
|
|
76
|
+
with an MCP request and response metadata, which is essential for building
|
|
77
|
+
ChatGPT Apps that return `structuredContent` and `_meta` payloads _out of band_
|
|
78
|
+
of the typical API response flow.
|
|
79
|
+
|
|
80
|
+
This means that you can still use your existing APIs as MCP tools for your
|
|
81
|
+
OpenAI Apps SDK application while wrapping them with a custom module that uses
|
|
82
|
+
`ZuploMcpSdk` in order to propagate `_meta` application state.
|
|
83
|
+
|
|
84
|
+
### Usage
|
|
85
|
+
|
|
86
|
+
Import the SDK and create an instance in your custom handler by passing in the
|
|
87
|
+
request context:
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
import { ZuploContext, ZuploMcpSdk, ZuploRequest } from "@zuplo/runtime";
|
|
91
|
+
|
|
92
|
+
export default async function handler(
|
|
93
|
+
request: ZuploRequest,
|
|
94
|
+
context: ZuploContext,
|
|
95
|
+
) {
|
|
96
|
+
const sdk = new ZuploMcpSdk(context);
|
|
97
|
+
|
|
98
|
+
// Access the incoming MCP request metadata
|
|
99
|
+
const mcpRequest = sdk.getRawCallToolRequest();
|
|
100
|
+
console.log(`Incoming _meta: ${JSON.stringify(mcpRequest?.params._meta)}`);
|
|
101
|
+
|
|
102
|
+
// Invoke another route on the gateway and get data for the application
|
|
103
|
+
const response = await context.invokeRoute("/v1/api/data");
|
|
104
|
+
const data = await response.json();
|
|
105
|
+
|
|
106
|
+
// Set metadata on the response for the ChatGPT widget
|
|
107
|
+
sdk.setRawCallToolResult({
|
|
108
|
+
content: [{ type: "text", text: "Data retrieved" }],
|
|
109
|
+
_meta: {
|
|
110
|
+
applicationState: data,
|
|
111
|
+
timestamp: new Date().toISOString(),
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
return data;
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
:::note
|
|
120
|
+
|
|
121
|
+
`context.invokeRoute` keeps the new request within the gateway: it does _not_ go
|
|
122
|
+
back out to HTTP. But it's important to keep in mind that an invoked route on
|
|
123
|
+
the gateway _will_ re-invoke the inbound and outbound policy pipeline for the
|
|
124
|
+
invoked route!
|
|
125
|
+
|
|
126
|
+
:::
|
|
127
|
+
|
|
128
|
+
### Methods
|
|
129
|
+
|
|
130
|
+
#### `getRawCallToolRequest()`
|
|
131
|
+
|
|
132
|
+
Retrieves the raw MCP `tools/call` request object, including any `_meta` sent by
|
|
133
|
+
ChatGPT. Use this to access client context hints like locale or user agent.
|
|
134
|
+
|
|
135
|
+
```typescript
|
|
136
|
+
const mcpRequest = sdk.getRawCallToolRequest();
|
|
137
|
+
const locale = mcpRequest?.params._meta?.["openai/locale"];
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
#### `setRawCallToolResult(result)`
|
|
141
|
+
|
|
142
|
+
Sets the MCP tool result, including the `_meta` field that is sent to the
|
|
143
|
+
ChatGPT widget but not visible to the model. Use this to pass data that your
|
|
144
|
+
widget needs for rendering.
|
|
145
|
+
|
|
146
|
+
```typescript
|
|
147
|
+
sdk.setRawCallToolResult({
|
|
148
|
+
content: [{ type: "text", text: "Operation complete" }],
|
|
149
|
+
_meta: {
|
|
150
|
+
detailedData: largeDataObject,
|
|
151
|
+
lastSyncedAt: new Date().toISOString(),
|
|
152
|
+
},
|
|
153
|
+
});
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
For complete documentation on building ChatGPT Apps, see the
|
|
159
|
+
[OpenAI Apps SDK documentation](https://developers.openai.com/apps-sdk) and
|
|
160
|
+
[the OpenAI Apps SDK guide on setting up your MCP server](https://developers.openai.com/apps-sdk/build/mcp-server)
|