PermDock
Research

Ecosystem index

Every third-party tool, platform and product the PermDock documentation names, grouped by category, with how PermDock composes with each (standard security fields, the Overlay, subjectFromJwt, ApprovalStore, DecisionSink, MCP, AuthZEN or a recipe) and the page that owns the recipe.

Source: a consolidation run in September 2026 after two ecosystem reviews (OpenAPI ecosystem, commercial landscape) kept surfacing tools that had been evaluated but recorded on different pages. This page is the single list. It carries no analysis of its own: each row names the tool, what it is, the mechanism PermDock reaches it through, and the page where the recipe or verdict lives. When a new tool is named anywhere in the docs, it gets a row here in the same change (the rule is in the maintainer guide).

The mechanisms are few and fixed by ADR 0023: PermDock composes through wire formats and interfaces, and ships a package entry only for the adapters on the adapters matrix.

MechanismMeaning
securityThe tool reads standard OpenAPI security and securitySchemes from the applied description; nothing PermDock-specific
OverlayThe tool applies or consumes PermDock's OpenAPI Overlay
x-permdock-*The tool reads a PermDock extension (only the OpenAPI-to-MCP bridges need one)
subjectFromJwtThe tool issues JWTs verified by permdock/jwt against its JWKS
authInfoThe tool issues the access tokens permdock/mcp receives as AuthInfo
MCPThe tool consumes or hosts MCP servers, so protectServer already guards it
AI SDKThe tool builds on the AI SDK, so permdock/ai-sdk applies
AuthZENThe tool is an AuthZEN policy enforcement point or decision point (AuthZEN)
ApprovalStoreThe tool holds or delivers approvals through the approvals interface
DecisionSinkThe tool receives decision events through a sink recipe or OpenTelemetry (audit)
where targetThe tool is a compile target for portable conditions, shipped or candidate
HookThe tool has an in-process hook a shipped adapter fills
RecipeDocumented composition; no package
TrackingNamed and watched; nothing to do yet

OpenAPI producers

ToolWhat it isMechanismOwning page
next-openapi-genRoute scanner for Next.js, TanStack Start, React Router, Remix, SvelteKit, Nuxt, Astro, Hono, Express; applies OverlaysOverlayNext.js adapter, OpenAPI ecosystem
hono-openapi, @hono/zod-openapiHono spec generatorsHook (describe, security)Hono adapter
@orpc/openapioRPC spec generatorHook (spec)oRPC adapter
trpc-to-openapitRPC spec generatorHook plus Overlay for per-scopetRPC adapter
@elysia/openapiElysia spec generatorHookElysia adapter
@fastify/swagger, @nestjs/swaggerFastify and Nest spec generatorsHookFastify, Nest
TypeSpecDesign-first API language (1.0 GA), emits OpenAPI 3.0 to 3.2Overlay on emitter outputOpenAPI ecosystem
tsoa, ts-rest, Effect HttpApi, feTSCode-first producers without a per-route hookOverlayOpenAPI ecosystem
Hand-written YAML or JSONDesign-first descriptionsOverlayOpenAPI adapter
x-gnap (community GNAP security-scheme extension)Vendor extension describing a GNAP deployment on an OpenAPI security scheme (grant_endpoint, token_formats, key_proofs, interaction, access_rights, continuation); no OpenAPI Initiative standingTracking (never emitted; preserved untouched by the importer)GNAP, OpenAPI 3.3

Overlay appliers

ToolWhat it isMechanismOwning page
next-openapi-gen overlay.applyApplies inside generateOverlayNext.js adapter
Redocly CLI join --overlayLint, bundle, generate pipelinesOverlayCLI: openapi
Bump.sh CLI bump overlay, GitHub ActionApplies at docs deployOverlayCLI: openapi
Speakeasy CLI overlay applySDK generation workflowsOverlayCLI: openapi
Zuplo CLIGateway importOverlayOpenAPI ecosystem
overlays-js, openapi-format, oas-patchVendor-neutral appliersOverlayCLI: openapi
Scalar CLIDocs and registry; Overlay support on its roadmapTrackingOpenAPI ecosystem

SDK generators

ToolWhat it isMechanismOwning page
Hey API (@hey-api/openapi-ts)Typed SDKs, TanStack Query, validatorssecurityOpenAPI ecosystem
OrvalClients, TanStack Query, MSW mocks, MCP serverssecurity; x-permdock-* for MCP outputOpenAPI ecosystem, MCP adapter
KubbPlugin-based generator including MCP and Redoc outputsecurity; x-permdock-* for MCP outputOpenAPI ecosystem
openapi-typescript, openapi-fetchTypes-only generation and a typed fetch wrapperNothing to doOpenAPI ecosystem
OpenAPI Generator, KiotaMulti-language generatorssecurityOpenAPI ecosystem
Redocly generate-clientClientssecurityOpenAPI ecosystem
Fern, SpeakeasyCommercial SDK, docs and MCP generatorssecurity; never their namespacesOpenAPI ecosystem
StainlessSDK generator; acquired by Anthropic, hosted product wound downHistorical; x-stainless-* never writtenOpenAPI ecosystem

Docs UIs and hosts

ToolWhat it isMechanismOwning page
ScalarAPI reference and client; renders x-badgessecurity, optional x-badges hintOpenAPI adapter
Swagger UI, Redoc, Stoplight Elements, RapiDoc, fumadocs-openapi, ZudokuOpen-source docs UIssecurityOpenAPI ecosystem
MintlifyHosted docs; x-mint, x-mcp; generates an MCP serversecurity; never its namespacesOpenAPI ecosystem
Bump.shHosted docs and changelog; appliersecurity, OverlayOpenAPI ecosystem
Fern docs, Redocly Realm, Docusaurus OpenAPI, GitBook, PostmanHosted or static docssecurityOpenAPI ecosystem
ReadMeHosted docs; x-readmeNever writtenOpenAPI registries

OpenAPI-to-MCP bridges and MCP hosts

ToolWhat it isMechanismOwning page
Orval, Kubb, Scalar, Speakeasy, Fern, Mintlify, Postman MCP GeneratorGenerate an MCP server from a descriptionx-permdock-permissions bound as each tool's permissionMCP adapter
Zuplo (x-zuplo-route.mcp), Kong openapi2mcp and ai-mcp-proxyGateway-hosted MCP from a descriptionx-permdock-permissions; gateway extensions never writtenOpenAPI ecosystem
AWS Bedrock AgentCore GatewayOpenAPI, Lambda and MCP targets as MCP tools; Cedar policyMCP when self-hosted; security and operationId otherwiseAgent frameworks, commercial landscape
mcp-handler (Vercel)Fetch handler for MCP servers on Next.js, Nuxt, SvelteKit, Hono; withMcpAuth, protectedResourceHandlerMCP (protectServer inside createMcpHandler)MCP adapter Hosting, Next.js adapter MCP route
@modelcontextprotocol/server 2.xOfficial TypeScript SDK v2Types-only optional peer of permdock/mcpMCP adapter, installation
Official Express middleware, Cloudflare McpAgent, FastMCP (TypeScript), xmcpOther MCP hostsMCPMCP adapter Hosting
mcp-remotestdio bridge for remote serversNothing to doMCP adapter

Linters, testing and diff

ToolWhat it isMechanismOwning page
Spectral, Redocly lint, vacuumOpenAPI lintersPermDock ruleset file (Phase 2)CLI: openapi
Schemathesis ignored_authProperty-based API tests; verifies protected operations reject anonymous callsRecipe in CICLI: openapi
oasdiffBreaking-change diff; security removals are breakingRecipe in CICLI: openapi
Prism, MicrocksMock servers honouring securitysecurityOpenAPI ecosystem
MSWRequest mocking used by @permdock/testing fixturesRecipetesting

API gateways and decision services

ToolWhat it isMechanismOwning page
Kong, Envoy ext_authz, Tyk, Zuplo, WSO2Gateways with AuthZEN enforcement pointsAuthZEN (in-app handler or PermDock Cloud ADS)AuthZEN adapter
Cerbos, Permit.io, AuthZed (SpiceDB), Oso, OpenFGA, Topaz, KeycloakAuthorization products and enginesAuthZEN through permdock/pdp; positioningcomparison, commercial landscape
Cedar, Amazon Verified Permissions, AgentCore PolicyPolicy language and its hosted enginesCompile target considered, not scheduledcomparison, commercial landscape
Gateway import namespaces (x-amazon-apigateway-*, x-google-*, x-kong-*, x-zuplo-*, x-ms-*)Vendor extensions in descriptionsNever writtenOpenAPI registries

Identity providers and agent identity

ToolWhat it isMechanismOwning page
Supabase Auth, Clerk, Better Auth, ConvexProviders with an in-process verification hookAdapter (subjectFrom*)authentication, provider pages
Clerk BillingPlans and features as pla and fea claimsRoles under "entitlements are roles"Clerk provider
Auth.js (NextAuth)Framework sessionSession resolverauthentication
WorkOS AuthKit and Connect, Auth0, Logto, Kinde, Neon Auth, Stack Auth, Firebase Auth, Amazon Cognito, Keycloak, OryJWKS-publishing providerssubjectFromJwtauthentication
Stytch Connected Apps, Descope, Scalekit, Auth0 Token Vault, Supabase OAuth 2.1 serverOAuth 2.1 authorization servers for MCP serverssubjectFromJwt, authInfoauthentication, MCP authorization
Okta (Cross App Access), Microsoft Entra ID (Agent ID)Enterprise IdPs with agent identitysubjectFromJwt; EMA / ID-JAG transparentauthentication, delegation
Google Identity (Sign in with Google, Google Workspace)Consumer and workforce OIDC IdP; hd tenant, no groups in the tokensubjectFromJwt or the auth layer's session; groups from a directory lookupauthentication single sign-on
Enterprise SSO layers (WorkOS AuthKit and Directory Sync, Clerk Enterprise SSO, Better Auth SSO plugin, Auth0 Organizations, Supabase SAML)SAML / OIDC termination and group-to-role mapping in front of the appSession or JWT consumed by subjectFrom*; a SCIM receiver is considered, not scheduledauthentication, commercial landscape
Frontegg, PropelAuth, SuperTokens, HankoApplication-auth vendorssubjectFromJwtauthentication
ZitadelOpen-source IdP with organisations and project roles nested per organisation in urn:zitadel:iam:org:project:rolessubjectFromJwt with claims.memberships flattening role to { tenant, roles }JWT authorization claims, SaaS tenancy and roles
Organisation, team and custom-role models (Clerk organizations and custom roles, Auth0 Organizations, WorkOS organization roles, Better Auth organization plugin with teams and dynamic roles, Kinde organizations, Descope tenants, Frontegg entitlements, PropelAuth orgs, Logto organization tokens)Where memberships and tenant-defined roles are storedprincipal.memberships from subjectFrom*; RoleSource and MembershipSource implementations per provider; never a PermDock tabletenancy, SaaS tenancy and roles
SCIM 2.0 directories (Okta, Entra ID, Google Workspace via WorkOS Directory Sync or the provider's SCIM endpoint)Group provisioning; group id / value as team identifiersTeam memberships keyed on the SCIM id, via: 'group:<id>'; a Cloud SCIM receiver is considered, not scheduledJWT authorization claims, authentication
Vercel Agent Auth (Better Auth)Delegated agent identities via RFC 8693actor and delegation mapper when publishedcommercial landscape
Web Bot Auth, SPIFFEWorkload and bot identityactor from signature or SVIDWeb Bot Auth, threat model

Agent runtimes and frameworks

ToolWhat it isMechanismOwning page
Vercel AI SDK 7Model and tool layerAdapter (permdock/ai-sdk)AI SDK adapter
Claude Agent SDKAnthropic agent runtimeAdapter (permdock/claude-agent)Claude Agent adapter
EveVercel agent frameworkAdapter (permdock/eve)Eve adapter
OpenAI Agents SDKOpenAI agent runtime; tool guardrails as a second hook; Agent Builder retiringAdapter (permdock/openai)OpenAI adapter
Model Context Protocol serversTool protocolAdapter (permdock/mcp)MCP adapter
WebMCPBrowser tool registrationAdapter (permdock/webmcp)WebMCP adapter
A2AAgent-to-agent protocolAdapter (permdock/a2a)A2A adapter
LangGraph.jsGraph runtime with interruptRecipe; Phase 4 adapter candidateagent frameworks
Mastra, Cloudflare Agents SDK, Vercel Workflow WorkflowAgentAI SDK based runtimesAI SDKagent frameworks
Inngest AgentKit, Google ADKRuntimes with before-tool hooksRecipeagent frameworks
OpenAI Apps SDK (ChatGPT apps)Apps as MCP serversMCPagent frameworks
n8nWorkflow automation with AI Agent approvalsMCP; approval delivery recipeagent frameworks, approvals adapter
AWS Bedrock AgentCore Runtime and PolicyHosted agent runtime with Cedar at the gatewayMCP; recipeagent frameworks
Arcade, Composio, Permit MCP Gateway, Oso for AgentsHosted tool-auth proxiesPositioning onlycommercial landscape
AG-UI, Agent Client ProtocolUI and editor protocolsPayload carried unchanged; trackingagent frameworks

Coding-agent hooks

ToolWhat it isMechanismOwning page
Claude Code hooksPreToolUse allow, deny, askAdapter (permissionRequestHook)Claude Agent adapter
Cursor hooks, Gemini CLI hooks, Codex CLI, OpenCodePre-tool hooks in coding agentsRecipe over a permdock/terminal guardagent frameworks, terminal adapter
Cursor and Claude Code plugin marketplaces, skills.shDistribution of the shipped skillsDistributioncommercial landscape

Approval delivery and durable execution

ToolWhat it isMechanismOwning page
Vercel Chat SDK requestApprovalApproval cards on Slack, Teams, Discord with signature-verified respondersApprovalStore delivery recipe (reference)approvals adapter Delivery
Vercel Workflow SDKDurable stepsHolds the waitapprovals adapter
Trigger.dev waitpoints, Temporal, Restate, Inngest, Cloudflare WorkflowsDurable execution runtimesApprovalStore recipeapprovals adapter
Cloudflare Durable Objects, D1, Turso, SQLite, Redis, Upstash, Vercel KV, Postgres, Neon, SupabaseBacking storesApprovalStore recipeapprovals adapter
Knock, Novu, Courier, Resend, TwilioNotification channelsRecipe; link to approvalsHandlerapprovals adapter
Slack App DirectoryListing for an approval botDistributioncommercial landscape
PermDock CloudHosted store, inbox, deliverycloud().approvalsCloud adapter

Sinks, observability and compliance

ToolWhat it isMechanismOwning page
OpenTelemetry (@opentelemetry/api), GenAI semantic conventionsTracing API and the execute_tool spanAdapter (permdock/otel)OpenTelemetry adapter
Langfuse, LangSmith, Braintrust, Datadog LLM Observability, Sentry, PostHogLLM observabilityOpenTelemetry; no sink neededaudit
Splunk, Microsoft Sentinel, Datadog Cloud SIEM, AWS Security Lake, Google SecOps, Elastic SecuritySIEMs and security lakesDecisionSink with the OCSF projectionaudit
Axiom, Better Stack, a Postgres table, a queueLog and event destinationsDecisionSink recipe; CloudEvents envelopeaudit
Vanta, Drata, SecureframeCompliance evidenceQuery the sink or the Cloud exportaudit
OCSF, CloudEventsSchemas for the events on the wireProjection and envelopewire formats
PermDock Cloud decision logHosted sinkcloud().sinkCloud adapter

Feature flags and entitlements

ToolWhat it isMechanismOwning page
OpenFeatureCNCF vendor-neutral flag APIsubject or context inputpolicies
Vercel Flags SDK, PostHog, LaunchDarkly, Statsig, Unleash, Flagsmith, GrowthBookFlag vendorsThrough OpenFeature or directly as context; never grantspolicies
Stripe Entitlements, Clerk Billing, Frontegg entitlements, Kinde feature_flagsBilling and plan entitlementsRoles under "entitlements are roles"policies, Clerk provider
Stigg, SchematicEntitlement and plan-management platforms (features per plan, per-customer overrides, usage limits)Plan features become roles through context or a RoleSource.assignable(tenant) subset; usage limits map to limit grants with a LimitStore; never grants on their ownSaaS tenancy and roles, policies
NilePostgres built around a tenants table with per-tenant isolation and a tenant-aware connectionscopes.tenant.key on rows; the memberOf node compiles to the tenant column; a MembershipSource over Nile's users.tenant_usersSaaS tenancy and roles, RLS adapter

Databases and sync engines

ToolWhat it isMechanismOwning page
Drizzle, Prisma, KyselyTypeScript query builders and ORMsAdapter (toWhere)Drizzle, Prisma, Kysely
Postgres, Supabase, Neon (RLS)Row-level security targetspermdock rls generateRLS adapter
ConvexBackend platformAdapter (permdock/convex)Convex adapter
Zero, ElectricSQL, PowerSync, InstantDB, TinyBaseLocal-first sync engineswhere target candidates (Phase 3 planning)local-first sync
MongoDBDocument databasewhere target candidatelocal-first sync
Payload CMSCMS with access-control functions returning WhereTrackinglandscape
Cloudflare D1, Turso, SQLiteSQLite-family storesDrizzle sqlite dialect; ApprovalStore recipeapprovals adapter

Distribution channels

ChannelWhat it isMechanismOwning page
npm (permdock, @permdock/cli, @permdock/testing)The packagesInstall pathinstallation
Vercel MarketplaceNative integration listing for PermDock Cloud; eve-agent templateCloud provisioningCloud adapter, commercial landscape
Supabase partner marketplace, Convex components directoryProvider ecosystemsDistributioncommercial landscape
Cursor and Claude Code plugin marketplaces, skills.shSkills and a docs MCPDistributioncommercial landscape
GitHub (App for audit-permissions; Actions recipe for --check)CI and reviewRecipe; Cloud PR botCLI: openapi, commercial landscape
MCP RegistryDiscovery of MCP serversTrackingagent docs standards
AWS MarketplaceLater channel for the hosted ADSNot before the Cloud alphacommercial landscape

Adopt / adapt / avoid

The verdicts live on the pages in the last column; this page only fixes the rule that produced them. Adopt: standard fields, the Overlay, subjectFromJwt, the three hosted-capability interfaces, MCP and AuthZEN as the six mechanisms through which every row is reached. Adapt: a recipe on the owning page whenever a tool needs more than a standard field, and a consumer-side overlay when a tool wants a derived value in its own namespace. Avoid: a package entry for any row on this page that is not already on the adapters matrix, and naming a tool anywhere in the docs without a row here.

Decisions informed

On this page