@workos/mcp-docs-server 0.1.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.
Files changed (455) hide show
  1. package/.docs/organized/changelogs/workos-platform.json +277 -0
  2. package/.docs/organized/docs/admin-portal/_navigation.mdx +16 -0
  3. package/.docs/organized/docs/admin-portal/custom-branding.mdx +111 -0
  4. package/.docs/organized/docs/admin-portal/example-apps.mdx +46 -0
  5. package/.docs/organized/docs/admin-portal/index.mdx +240 -0
  6. package/.docs/organized/docs/audit-logs/_navigation.mdx +22 -0
  7. package/.docs/organized/docs/audit-logs/admin-portal.mdx +20 -0
  8. package/.docs/organized/docs/audit-logs/editing-events.mdx +27 -0
  9. package/.docs/organized/docs/audit-logs/exporting-events.mdx +29 -0
  10. package/.docs/organized/docs/audit-logs/index.mdx +110 -0
  11. package/.docs/organized/docs/audit-logs/log-streams.mdx +56 -0
  12. package/.docs/organized/docs/audit-logs/metadata-schema.mdx +21 -0
  13. package/.docs/organized/docs/custom-domains/_navigation.mdx +16 -0
  14. package/.docs/organized/docs/custom-domains/admin-portal.mdx +38 -0
  15. package/.docs/organized/docs/custom-domains/auth-api.mdx +59 -0
  16. package/.docs/organized/docs/custom-domains/authkit.mdx +36 -0
  17. package/.docs/organized/docs/custom-domains/email.mdx +41 -0
  18. package/.docs/organized/docs/custom-domains/index.mdx +19 -0
  19. package/.docs/organized/docs/dashboard.mdx +244 -0
  20. package/.docs/organized/docs/demo/_navigation.mdx +26 -0
  21. package/.docs/organized/docs/demo/accordion.mdx +34 -0
  22. package/.docs/organized/docs/demo/checklist.mdx +33 -0
  23. package/.docs/organized/docs/demo/code-block.mdx +185 -0
  24. package/.docs/organized/docs/demo/definition-list.mdx +35 -0
  25. package/.docs/organized/docs/demo/index.mdx +7 -0
  26. package/.docs/organized/docs/demo/punctuation.mdx +37 -0
  27. package/.docs/organized/docs/demo/replacements.mdx +26 -0
  28. package/.docs/organized/docs/demo/table.mdx +26 -0
  29. package/.docs/organized/docs/demo/tabs.mdx +17 -0
  30. package/.docs/organized/docs/directory-sync/_navigation.mdx +28 -0
  31. package/.docs/organized/docs/directory-sync/attributes.mdx +209 -0
  32. package/.docs/organized/docs/directory-sync/example-apps.mdx +46 -0
  33. package/.docs/organized/docs/directory-sync/handle-inactive-users.mdx +52 -0
  34. package/.docs/organized/docs/directory-sync/identity-provider-role-assignment.mdx +134 -0
  35. package/.docs/organized/docs/directory-sync/index.mdx +107 -0
  36. package/.docs/organized/docs/directory-sync/quick-start.mdx +129 -0
  37. package/.docs/organized/docs/directory-sync/understanding-events.mdx +209 -0
  38. package/.docs/organized/docs/domain-verification/_navigation.mdx +10 -0
  39. package/.docs/organized/docs/domain-verification/api.mdx +60 -0
  40. package/.docs/organized/docs/domain-verification/index.mdx +67 -0
  41. package/.docs/organized/docs/email.mdx +109 -0
  42. package/.docs/organized/docs/events/_navigation.mdx +22 -0
  43. package/.docs/organized/docs/events/data-syncing/data-reconciliation.mdx +56 -0
  44. package/.docs/organized/docs/events/data-syncing/events-api.mdx +114 -0
  45. package/.docs/organized/docs/events/data-syncing/index.mdx +66 -0
  46. package/.docs/organized/docs/events/data-syncing/webhooks.mdx +173 -0
  47. package/.docs/organized/docs/events/index.mdx +783 -0
  48. package/.docs/organized/docs/events/observability/datadog.mdx +76 -0
  49. package/.docs/organized/docs/fga/_navigation.mdx +64 -0
  50. package/.docs/organized/docs/fga/identity-provider-sessions.mdx +68 -0
  51. package/.docs/organized/docs/fga/index.mdx +60 -0
  52. package/.docs/organized/docs/fga/local-development.mdx +155 -0
  53. package/.docs/organized/docs/fga/modeling/abac.mdx +107 -0
  54. package/.docs/organized/docs/fga/modeling/blocklist.mdx +84 -0
  55. package/.docs/organized/docs/fga/modeling/conditional-roles.mdx +99 -0
  56. package/.docs/organized/docs/fga/modeling/custom-roles.mdx +90 -0
  57. package/.docs/organized/docs/fga/modeling/entitlements.mdx +127 -0
  58. package/.docs/organized/docs/fga/modeling/managed-service-provider.mdx +131 -0
  59. package/.docs/organized/docs/fga/modeling/org-roles-and-permissions.mdx +95 -0
  60. package/.docs/organized/docs/fga/modeling/policy-context.mdx +231 -0
  61. package/.docs/organized/docs/fga/modeling/public-access.mdx +61 -0
  62. package/.docs/organized/docs/fga/modeling/shareable-content.mdx +106 -0
  63. package/.docs/organized/docs/fga/modeling/superusers.mdx +74 -0
  64. package/.docs/organized/docs/fga/modeling/user-groups.mdx +92 -0
  65. package/.docs/organized/docs/fga/operations-usage.mdx +104 -0
  66. package/.docs/organized/docs/fga/playground.mdx +12 -0
  67. package/.docs/organized/docs/fga/policies.mdx +462 -0
  68. package/.docs/organized/docs/fga/query-language.mdx +112 -0
  69. package/.docs/organized/docs/fga/quick-start.mdx +174 -0
  70. package/.docs/organized/docs/fga/resources.mdx +92 -0
  71. package/.docs/organized/docs/fga/schema-management.mdx +224 -0
  72. package/.docs/organized/docs/fga/schema.mdx +388 -0
  73. package/.docs/organized/docs/fga/warrant-tokens.mdx +44 -0
  74. package/.docs/organized/docs/fga/warrants.mdx +92 -0
  75. package/.docs/organized/docs/glossary.mdx +184 -0
  76. package/.docs/organized/docs/integrations/_navigation.mdx +6 -0
  77. package/.docs/organized/docs/integrations/access-people-hr.mdx +87 -0
  78. package/.docs/organized/docs/integrations/adp-oidc.mdx +103 -0
  79. package/.docs/organized/docs/integrations/apple.mdx +169 -0
  80. package/.docs/organized/docs/integrations/auth0-directory-sync.mdx +78 -0
  81. package/.docs/organized/docs/integrations/auth0-enterprise-connection.mdx +92 -0
  82. package/.docs/organized/docs/integrations/auth0-saml.mdx +81 -0
  83. package/.docs/organized/docs/integrations/aws-cognito.mdx +81 -0
  84. package/.docs/organized/docs/integrations/bamboohr.mdx +90 -0
  85. package/.docs/organized/docs/integrations/breathe-hr.mdx +89 -0
  86. package/.docs/organized/docs/integrations/bubble.mdx +129 -0
  87. package/.docs/organized/docs/integrations/cas-saml.mdx +65 -0
  88. package/.docs/organized/docs/integrations/cezanne.mdx +74 -0
  89. package/.docs/organized/docs/integrations/classlink-saml.mdx +100 -0
  90. package/.docs/organized/docs/integrations/cloudflare-saml.mdx +164 -0
  91. package/.docs/organized/docs/integrations/cyberark-saml.mdx +138 -0
  92. package/.docs/organized/docs/integrations/cyberark-scim.mdx +100 -0
  93. package/.docs/organized/docs/integrations/duo-saml.mdx +127 -0
  94. package/.docs/organized/docs/integrations/entra-id-saml.mdx +156 -0
  95. package/.docs/organized/docs/integrations/entra-id-scim.mdx +218 -0
  96. package/.docs/organized/docs/integrations/firebase.mdx +98 -0
  97. package/.docs/organized/docs/integrations/fourth.mdx +66 -0
  98. package/.docs/organized/docs/integrations/github-oauth.mdx +85 -0
  99. package/.docs/organized/docs/integrations/gitlab-oauth.mdx +81 -0
  100. package/.docs/organized/docs/integrations/google-directory-sync.mdx +86 -0
  101. package/.docs/organized/docs/integrations/google-oauth.mdx +173 -0
  102. package/.docs/organized/docs/integrations/google-saml.mdx +135 -0
  103. package/.docs/organized/docs/integrations/hibob.mdx +98 -0
  104. package/.docs/organized/docs/integrations/jumpcloud-saml.mdx +96 -0
  105. package/.docs/organized/docs/integrations/jumpcloud-scim.mdx +106 -0
  106. package/.docs/organized/docs/integrations/keycloak-saml.mdx +128 -0
  107. package/.docs/organized/docs/integrations/lastpass-saml.mdx +134 -0
  108. package/.docs/organized/docs/integrations/linkedin-oauth.mdx +77 -0
  109. package/.docs/organized/docs/integrations/login-gov-oidc.mdx +103 -0
  110. package/.docs/organized/docs/integrations/microsoft-ad-fs-saml.mdx +96 -0
  111. package/.docs/organized/docs/integrations/microsoft-oauth.mdx +101 -0
  112. package/.docs/organized/docs/integrations/miniorange-saml.mdx +124 -0
  113. package/.docs/organized/docs/integrations/net-iq-saml.mdx +75 -0
  114. package/.docs/organized/docs/integrations/next-auth.mdx +257 -0
  115. package/.docs/organized/docs/integrations/oidc.mdx +64 -0
  116. package/.docs/organized/docs/integrations/okta-saml.mdx +144 -0
  117. package/.docs/organized/docs/integrations/okta-scim.mdx +210 -0
  118. package/.docs/organized/docs/integrations/onelogin-saml.mdx +131 -0
  119. package/.docs/organized/docs/integrations/onelogin-scim.mdx +150 -0
  120. package/.docs/organized/docs/integrations/oracle-saml.mdx +76 -0
  121. package/.docs/organized/docs/integrations/pingfederate-saml.mdx +103 -0
  122. package/.docs/organized/docs/integrations/pingfederate-scim.mdx +150 -0
  123. package/.docs/organized/docs/integrations/pingone-saml.mdx +86 -0
  124. package/.docs/organized/docs/integrations/react-native-expo.mdx +93 -0
  125. package/.docs/organized/docs/integrations/rippling-saml.mdx +174 -0
  126. package/.docs/organized/docs/integrations/rippling-scim.mdx +148 -0
  127. package/.docs/organized/docs/integrations/salesforce-saml.mdx +143 -0
  128. package/.docs/organized/docs/integrations/saml.mdx +64 -0
  129. package/.docs/organized/docs/integrations/scim.mdx +64 -0
  130. package/.docs/organized/docs/integrations/sftp.mdx +150 -0
  131. package/.docs/organized/docs/integrations/shibboleth-generic-saml.mdx +84 -0
  132. package/.docs/organized/docs/integrations/shibboleth-unsolicited-saml.mdx +84 -0
  133. package/.docs/organized/docs/integrations/simple-saml-php.mdx +78 -0
  134. package/.docs/organized/docs/integrations/slack-oauth.mdx +102 -0
  135. package/.docs/organized/docs/integrations/supabase.mdx +68 -0
  136. package/.docs/organized/docs/integrations/vmware-saml.mdx +100 -0
  137. package/.docs/organized/docs/integrations/workday.mdx +156 -0
  138. package/.docs/organized/docs/integrations/xero-oauth.mdx +83 -0
  139. package/.docs/organized/docs/magic-link/_navigation.mdx +16 -0
  140. package/.docs/organized/docs/magic-link/example-apps.mdx +46 -0
  141. package/.docs/organized/docs/magic-link/index.mdx +199 -0
  142. package/.docs/organized/docs/magic-link/launch-checklist.mdx +27 -0
  143. package/.docs/organized/docs/mfa/_navigation.mdx +18 -0
  144. package/.docs/organized/docs/mfa/example-apps.mdx +46 -0
  145. package/.docs/organized/docs/mfa/index.mdx +140 -0
  146. package/.docs/organized/docs/mfa/ux/enrollment.mdx +74 -0
  147. package/.docs/organized/docs/mfa/ux/sign-in.mdx +30 -0
  148. package/.docs/organized/docs/migrate/_navigation.mdx +6 -0
  149. package/.docs/organized/docs/migrate/auth0.mdx +98 -0
  150. package/.docs/organized/docs/migrate/aws-cognito.mdx +115 -0
  151. package/.docs/organized/docs/migrate/clerk.mdx +106 -0
  152. package/.docs/organized/docs/migrate/firebase.mdx +80 -0
  153. package/.docs/organized/docs/migrate/other-services.mdx +179 -0
  154. package/.docs/organized/docs/migrate/standalone-sso.mdx +105 -0
  155. package/.docs/organized/docs/on-prem-deployment.mdx +119 -0
  156. package/.docs/organized/docs/postman.mdx +90 -0
  157. package/.docs/organized/docs/reference/_navigation.mdx +527 -0
  158. package/.docs/organized/docs/reference/admin-portal/index.mdx +6 -0
  159. package/.docs/organized/docs/reference/admin-portal/portal-link/generate.mdx +268 -0
  160. package/.docs/organized/docs/reference/admin-portal/portal-link/index.mdx +15 -0
  161. package/.docs/organized/docs/reference/admin-portal/provider-icons/index.mdx +52 -0
  162. package/.docs/organized/docs/reference/api-keys.mdx +22 -0
  163. package/.docs/organized/docs/reference/audit-logs/audit-log-export.mdx +239 -0
  164. package/.docs/organized/docs/reference/audit-logs/audit-log-schema.mdx +69 -0
  165. package/.docs/organized/docs/reference/audit-logs/create-event.mdx +673 -0
  166. package/.docs/organized/docs/reference/audit-logs/create-export.mdx +308 -0
  167. package/.docs/organized/docs/reference/audit-logs/create-schema.mdx +95 -0
  168. package/.docs/organized/docs/reference/audit-logs/get-export.mdx +117 -0
  169. package/.docs/organized/docs/reference/audit-logs/get-retention.mdx +34 -0
  170. package/.docs/organized/docs/reference/audit-logs/index.mdx +6 -0
  171. package/.docs/organized/docs/reference/audit-logs/list-actions.mdx +40 -0
  172. package/.docs/organized/docs/reference/audit-logs/list-schemas.mdx +40 -0
  173. package/.docs/organized/docs/reference/audit-logs/set-retention.mdx +39 -0
  174. package/.docs/organized/docs/reference/client-libraries.mdx +19 -0
  175. package/.docs/organized/docs/reference/directory-sync/directory/delete.mdx +90 -0
  176. package/.docs/organized/docs/reference/directory-sync/directory/get.mdx +105 -0
  177. package/.docs/organized/docs/reference/directory-sync/directory/index.mdx +385 -0
  178. package/.docs/organized/docs/reference/directory-sync/directory/list.mdx +281 -0
  179. package/.docs/organized/docs/reference/directory-sync/directory-group/get.mdx +105 -0
  180. package/.docs/organized/docs/reference/directory-sync/directory-group/index.mdx +277 -0
  181. package/.docs/organized/docs/reference/directory-sync/directory-group/list.mdx +295 -0
  182. package/.docs/organized/docs/reference/directory-sync/directory-user/get.mdx +112 -0
  183. package/.docs/organized/docs/reference/directory-sync/directory-user/index.mdx +470 -0
  184. package/.docs/organized/docs/reference/directory-sync/directory-user/list.mdx +304 -0
  185. package/.docs/organized/docs/reference/directory-sync/index.mdx +10 -0
  186. package/.docs/organized/docs/reference/domain-verification/create.mdx +38 -0
  187. package/.docs/organized/docs/reference/domain-verification/get.mdx +32 -0
  188. package/.docs/organized/docs/reference/domain-verification/index.mdx +84 -0
  189. package/.docs/organized/docs/reference/domain-verification/verify.mdx +36 -0
  190. package/.docs/organized/docs/reference/errors.mdx +30 -0
  191. package/.docs/organized/docs/reference/events/index.mdx +9 -0
  192. package/.docs/organized/docs/reference/events/list.mdx +246 -0
  193. package/.docs/organized/docs/reference/fga/batch-check.mdx +277 -0
  194. package/.docs/organized/docs/reference/fga/check.mdx +563 -0
  195. package/.docs/organized/docs/reference/fga/index.mdx +6 -0
  196. package/.docs/organized/docs/reference/fga/policy/create.mdx +27 -0
  197. package/.docs/organized/docs/reference/fga/policy/delete.mdx +18 -0
  198. package/.docs/organized/docs/reference/fga/policy/get.mdx +23 -0
  199. package/.docs/organized/docs/reference/fga/policy/index.mdx +52 -0
  200. package/.docs/organized/docs/reference/fga/policy/list.mdx +41 -0
  201. package/.docs/organized/docs/reference/fga/policy/update.mdx +26 -0
  202. package/.docs/organized/docs/reference/fga/query.mdx +375 -0
  203. package/.docs/organized/docs/reference/fga/resource/batch-write.mdx +175 -0
  204. package/.docs/organized/docs/reference/fga/resource/create.mdx +130 -0
  205. package/.docs/organized/docs/reference/fga/resource/delete.mdx +86 -0
  206. package/.docs/organized/docs/reference/fga/resource/get.mdx +88 -0
  207. package/.docs/organized/docs/reference/fga/resource/index.mdx +98 -0
  208. package/.docs/organized/docs/reference/fga/resource/list.mdx +188 -0
  209. package/.docs/organized/docs/reference/fga/resource/update.mdx +115 -0
  210. package/.docs/organized/docs/reference/fga/resource-type/apply.mdx +35 -0
  211. package/.docs/organized/docs/reference/fga/resource-type/create.mdx +24 -0
  212. package/.docs/organized/docs/reference/fga/resource-type/delete.mdx +22 -0
  213. package/.docs/organized/docs/reference/fga/resource-type/get.mdx +23 -0
  214. package/.docs/organized/docs/reference/fga/resource-type/index.mdx +68 -0
  215. package/.docs/organized/docs/reference/fga/resource-type/list.mdx +36 -0
  216. package/.docs/organized/docs/reference/fga/resource-type/update.mdx +23 -0
  217. package/.docs/organized/docs/reference/fga/schema/apply.mdx +42 -0
  218. package/.docs/organized/docs/reference/fga/schema/get.mdx +24 -0
  219. package/.docs/organized/docs/reference/fga/schema/index.mdx +39 -0
  220. package/.docs/organized/docs/reference/fga/warrant/batch-write.mdx +226 -0
  221. package/.docs/organized/docs/reference/fga/warrant/create.mdx +215 -0
  222. package/.docs/organized/docs/reference/fga/warrant/delete.mdx +212 -0
  223. package/.docs/organized/docs/reference/fga/warrant/index.mdx +186 -0
  224. package/.docs/organized/docs/reference/fga/warrant/list.mdx +282 -0
  225. package/.docs/organized/docs/reference/idempotency.mdx +21 -0
  226. package/.docs/organized/docs/reference/index.mdx +194 -0
  227. package/.docs/organized/docs/reference/magic-link/index.mdx +8 -0
  228. package/.docs/organized/docs/reference/magic-link/passwordless-session/create.mdx +268 -0
  229. package/.docs/organized/docs/reference/magic-link/passwordless-session/index.mdx +203 -0
  230. package/.docs/organized/docs/reference/magic-link/passwordless-session/send-email.mdx +158 -0
  231. package/.docs/organized/docs/reference/mfa/authentication-challenge.mdx +217 -0
  232. package/.docs/organized/docs/reference/mfa/authentication-factor.mdx +381 -0
  233. package/.docs/organized/docs/reference/mfa/challenge-factor.mdx +170 -0
  234. package/.docs/organized/docs/reference/mfa/delete-factor.mdx +93 -0
  235. package/.docs/organized/docs/reference/mfa/enroll-factor.mdx +241 -0
  236. package/.docs/organized/docs/reference/mfa/get-factor.mdx +108 -0
  237. package/.docs/organized/docs/reference/mfa/index.mdx +8 -0
  238. package/.docs/organized/docs/reference/mfa/verify-challenge.mdx +228 -0
  239. package/.docs/organized/docs/reference/organization/create.mdx +216 -0
  240. package/.docs/organized/docs/reference/organization/delete.mdx +89 -0
  241. package/.docs/organized/docs/reference/organization/get-by-external-id.mdx +40 -0
  242. package/.docs/organized/docs/reference/organization/get.mdx +104 -0
  243. package/.docs/organized/docs/reference/organization/index.mdx +274 -0
  244. package/.docs/organized/docs/reference/organization/list.mdx +258 -0
  245. package/.docs/organized/docs/reference/organization/update.mdx +236 -0
  246. package/.docs/organized/docs/reference/organization-domain.mdx +189 -0
  247. package/.docs/organized/docs/reference/pagination.mdx +244 -0
  248. package/.docs/organized/docs/reference/radar/attempts/create.mdx +115 -0
  249. package/.docs/organized/docs/reference/radar/attempts/index.mdx +7 -0
  250. package/.docs/organized/docs/reference/radar/attempts/update.mdx +34 -0
  251. package/.docs/organized/docs/reference/radar/index.mdx +8 -0
  252. package/.docs/organized/docs/reference/radar/lists/delete.mdx +36 -0
  253. package/.docs/organized/docs/reference/radar/lists/index.mdx +7 -0
  254. package/.docs/organized/docs/reference/radar/lists/update.mdx +36 -0
  255. package/.docs/organized/docs/reference/rate-limits.mdx +50 -0
  256. package/.docs/organized/docs/reference/roles/index.mdx +268 -0
  257. package/.docs/organized/docs/reference/roles/list-for-organization.mdx +152 -0
  258. package/.docs/organized/docs/reference/sso/connection/delete.mdx +89 -0
  259. package/.docs/organized/docs/reference/sso/connection/get.mdx +104 -0
  260. package/.docs/organized/docs/reference/sso/connection/index.mdx +388 -0
  261. package/.docs/organized/docs/reference/sso/connection/list.mdx +320 -0
  262. package/.docs/organized/docs/reference/sso/get-authorization-url/error-codes.mdx +28 -0
  263. package/.docs/organized/docs/reference/sso/get-authorization-url/index.mdx +434 -0
  264. package/.docs/organized/docs/reference/sso/get-authorization-url/redirect-uri.mdx +21 -0
  265. package/.docs/organized/docs/reference/sso/index.mdx +8 -0
  266. package/.docs/organized/docs/reference/sso/logout/authorize.mdx +47 -0
  267. package/.docs/organized/docs/reference/sso/logout/index.mdx +14 -0
  268. package/.docs/organized/docs/reference/sso/logout/redirect.mdx +32 -0
  269. package/.docs/organized/docs/reference/sso/profile/get-profile-and-token.mdx +229 -0
  270. package/.docs/organized/docs/reference/sso/profile/get-user-profile.mdx +127 -0
  271. package/.docs/organized/docs/reference/sso/profile/index.mdx +364 -0
  272. package/.docs/organized/docs/reference/testing.mdx +8 -0
  273. package/.docs/organized/docs/reference/user-management/access-token/index.mdx +13 -0
  274. package/.docs/organized/docs/reference/user-management/authentication/code.mdx +448 -0
  275. package/.docs/organized/docs/reference/user-management/authentication/email-verification.mdx +359 -0
  276. package/.docs/organized/docs/reference/user-management/authentication/get-authorization-url/error-codes.mdx +25 -0
  277. package/.docs/organized/docs/reference/user-management/authentication/get-authorization-url/index.mdx +425 -0
  278. package/.docs/organized/docs/reference/user-management/authentication/get-authorization-url/pkce.mdx +9 -0
  279. package/.docs/organized/docs/reference/user-management/authentication/get-authorization-url/redirect-uri.mdx +23 -0
  280. package/.docs/organized/docs/reference/user-management/authentication/index.mdx +66 -0
  281. package/.docs/organized/docs/reference/user-management/authentication/magic-auth.mdx +353 -0
  282. package/.docs/organized/docs/reference/user-management/authentication/organization-selection.mdx +349 -0
  283. package/.docs/organized/docs/reference/user-management/authentication/password.mdx +350 -0
  284. package/.docs/organized/docs/reference/user-management/authentication/refresh-and-seal-session-data.mdx +57 -0
  285. package/.docs/organized/docs/reference/user-management/authentication/refresh-token.mdx +381 -0
  286. package/.docs/organized/docs/reference/user-management/authentication/session-cookie.mdx +79 -0
  287. package/.docs/organized/docs/reference/user-management/authentication/totp.mdx +369 -0
  288. package/.docs/organized/docs/reference/user-management/authentication-errors/email-verification-required-error.mdx +42 -0
  289. package/.docs/organized/docs/reference/user-management/authentication-errors/index.mdx +20 -0
  290. package/.docs/organized/docs/reference/user-management/authentication-errors/mfa-challenge-error.mdx +44 -0
  291. package/.docs/organized/docs/reference/user-management/authentication-errors/mfa-enrollment-error.mdx +37 -0
  292. package/.docs/organized/docs/reference/user-management/authentication-errors/organization-authentication-required-error.mdx +68 -0
  293. package/.docs/organized/docs/reference/user-management/authentication-errors/organization-selection-error.mdx +44 -0
  294. package/.docs/organized/docs/reference/user-management/authentication-errors/sso-required-error.mdx +51 -0
  295. package/.docs/organized/docs/reference/user-management/email-verification/get.mdx +88 -0
  296. package/.docs/organized/docs/reference/user-management/email-verification/index.mdx +227 -0
  297. package/.docs/organized/docs/reference/user-management/identity/index.mdx +74 -0
  298. package/.docs/organized/docs/reference/user-management/identity/list.mdx +52 -0
  299. package/.docs/organized/docs/reference/user-management/index.mdx +13 -0
  300. package/.docs/organized/docs/reference/user-management/invitation/accept.mdx +39 -0
  301. package/.docs/organized/docs/reference/user-management/invitation/find-by-token.mdx +87 -0
  302. package/.docs/organized/docs/reference/user-management/invitation/get.mdx +87 -0
  303. package/.docs/organized/docs/reference/user-management/invitation/index.mdx +374 -0
  304. package/.docs/organized/docs/reference/user-management/invitation/list.mdx +247 -0
  305. package/.docs/organized/docs/reference/user-management/invitation/revoke.mdx +90 -0
  306. package/.docs/organized/docs/reference/user-management/invitation/send.mdx +230 -0
  307. package/.docs/organized/docs/reference/user-management/logout/get-logout-url-from-session-cookie.mdx +52 -0
  308. package/.docs/organized/docs/reference/user-management/logout/get-logout-url.mdx +147 -0
  309. package/.docs/organized/docs/reference/user-management/logout/index.mdx +26 -0
  310. package/.docs/organized/docs/reference/user-management/magic-auth/create.mdx +148 -0
  311. package/.docs/organized/docs/reference/user-management/magic-auth/get.mdx +88 -0
  312. package/.docs/organized/docs/reference/user-management/magic-auth/index.mdx +225 -0
  313. package/.docs/organized/docs/reference/user-management/mfa/authentication-challenge.mdx +194 -0
  314. package/.docs/organized/docs/reference/user-management/mfa/authentication-factor.mdx +324 -0
  315. package/.docs/organized/docs/reference/user-management/mfa/enroll-auth-factor.mdx +296 -0
  316. package/.docs/organized/docs/reference/user-management/mfa/index.mdx +5 -0
  317. package/.docs/organized/docs/reference/user-management/mfa/list-auth-factors.mdx +194 -0
  318. package/.docs/organized/docs/reference/user-management/organization-membership/create.mdx +155 -0
  319. package/.docs/organized/docs/reference/user-management/organization-membership/deactivate.mdx +106 -0
  320. package/.docs/organized/docs/reference/user-management/organization-membership/delete.mdx +76 -0
  321. package/.docs/organized/docs/reference/user-management/organization-membership/get.mdx +95 -0
  322. package/.docs/organized/docs/reference/user-management/organization-membership/index.mdx +265 -0
  323. package/.docs/organized/docs/reference/user-management/organization-membership/list.mdx +291 -0
  324. package/.docs/organized/docs/reference/user-management/organization-membership/reactivate.mdx +106 -0
  325. package/.docs/organized/docs/reference/user-management/organization-membership/update.mdx +119 -0
  326. package/.docs/organized/docs/reference/user-management/password-reset/create.mdx +108 -0
  327. package/.docs/organized/docs/reference/user-management/password-reset/get.mdx +88 -0
  328. package/.docs/organized/docs/reference/user-management/password-reset/index.mdx +227 -0
  329. package/.docs/organized/docs/reference/user-management/password-reset/reset-password.mdx +144 -0
  330. package/.docs/organized/docs/reference/user-management/session-helpers/authenticate.mdx +176 -0
  331. package/.docs/organized/docs/reference/user-management/session-helpers/get-logout-url.mdx +42 -0
  332. package/.docs/organized/docs/reference/user-management/session-helpers/index.mdx +14 -0
  333. package/.docs/organized/docs/reference/user-management/session-helpers/load-sealed-session.mdx +105 -0
  334. package/.docs/organized/docs/reference/user-management/session-helpers/refresh.mdx +213 -0
  335. package/.docs/organized/docs/reference/user-management/session-tokens/access-token.mdx +90 -0
  336. package/.docs/organized/docs/reference/user-management/session-tokens/index.mdx +5 -0
  337. package/.docs/organized/docs/reference/user-management/session-tokens/jwks.mdx +110 -0
  338. package/.docs/organized/docs/reference/user-management/session-tokens/refresh-token.mdx +8 -0
  339. package/.docs/organized/docs/reference/user-management/user/create.mdx +327 -0
  340. package/.docs/organized/docs/reference/user-management/user/delete.mdx +76 -0
  341. package/.docs/organized/docs/reference/user-management/user/get-by-external-id.mdx +39 -0
  342. package/.docs/organized/docs/reference/user-management/user/get.mdx +103 -0
  343. package/.docs/organized/docs/reference/user-management/user/index.mdx +322 -0
  344. package/.docs/organized/docs/reference/user-management/user/list.mdx +260 -0
  345. package/.docs/organized/docs/reference/user-management/user/update.mdx +344 -0
  346. package/.docs/organized/docs/reference/vault/index.mdx +6 -0
  347. package/.docs/organized/docs/reference/vault/key/create-data-key.mdx +106 -0
  348. package/.docs/organized/docs/reference/vault/key/decrypt-data-key.mdx +84 -0
  349. package/.docs/organized/docs/reference/vault/key/decrypt-data.mdx +52 -0
  350. package/.docs/organized/docs/reference/vault/key/encrypt-data.mdx +58 -0
  351. package/.docs/organized/docs/reference/vault/key/index.mdx +25 -0
  352. package/.docs/organized/docs/reference/vault/object/create.mdx +62 -0
  353. package/.docs/organized/docs/reference/vault/object/delete.mdx +75 -0
  354. package/.docs/organized/docs/reference/vault/object/get.mdx +50 -0
  355. package/.docs/organized/docs/reference/vault/object/index.mdx +174 -0
  356. package/.docs/organized/docs/reference/vault/object/list.mdx +105 -0
  357. package/.docs/organized/docs/reference/vault/object/metadata.mdx +52 -0
  358. package/.docs/organized/docs/reference/vault/object/update.mdx +67 -0
  359. package/.docs/organized/docs/reference/vault/object/version.mdx +87 -0
  360. package/.docs/organized/docs/reference/vault/object/versions.mdx +83 -0
  361. package/.docs/organized/docs/reference/widgets/get-token.mdx +185 -0
  362. package/.docs/organized/docs/reference/widgets/index.mdx +6 -0
  363. package/.docs/organized/docs/reference/workos-connect/authorize/index.mdx +75 -0
  364. package/.docs/organized/docs/reference/workos-connect/index.mdx +33 -0
  365. package/.docs/organized/docs/reference/workos-connect/introspection/index.mdx +122 -0
  366. package/.docs/organized/docs/reference/workos-connect/metadata/index.mdx +25 -0
  367. package/.docs/organized/docs/reference/workos-connect/metadata/oauth-authorization-server/index.mdx +99 -0
  368. package/.docs/organized/docs/reference/workos-connect/metadata/openid-configuration/index.mdx +70 -0
  369. package/.docs/organized/docs/reference/workos-connect/token/authorization-code-grant/access-token.mdx +53 -0
  370. package/.docs/organized/docs/reference/workos-connect/token/authorization-code-grant/id-token.mdx +60 -0
  371. package/.docs/organized/docs/reference/workos-connect/token/authorization-code-grant/index.mdx +69 -0
  372. package/.docs/organized/docs/reference/workos-connect/token/client-credentials-grant/access-token.mdx +46 -0
  373. package/.docs/organized/docs/reference/workos-connect/token/client-credentials-grant/index.mdx +56 -0
  374. package/.docs/organized/docs/reference/workos-connect/token/index.mdx +39 -0
  375. package/.docs/organized/docs/reference/workos-connect/token/refresh-token-grant.mdx +69 -0
  376. package/.docs/organized/docs/reference/workos-connect/userinfo/index.mdx +46 -0
  377. package/.docs/organized/docs/sdks/dotnet.mdx +6 -0
  378. package/.docs/organized/docs/sdks/elixir.mdx +6 -0
  379. package/.docs/organized/docs/sdks/go.mdx +6 -0
  380. package/.docs/organized/docs/sdks/java.mdx +9 -0
  381. package/.docs/organized/docs/sdks/laravel.mdx +6 -0
  382. package/.docs/organized/docs/sdks/node.mdx +9 -0
  383. package/.docs/organized/docs/sdks/php.mdx +6 -0
  384. package/.docs/organized/docs/sdks/python.mdx +6 -0
  385. package/.docs/organized/docs/sdks/ruby.mdx +9 -0
  386. package/.docs/organized/docs/sso/_navigation.mdx +44 -0
  387. package/.docs/organized/docs/sso/_sequence-diagrams/saml-protocol-security-considerations.md +59 -0
  388. package/.docs/organized/docs/sso/attributes.mdx +110 -0
  389. package/.docs/organized/docs/sso/domains.mdx +111 -0
  390. package/.docs/organized/docs/sso/example-apps.mdx +46 -0
  391. package/.docs/organized/docs/sso/identity-provider-role-assignment.mdx +113 -0
  392. package/.docs/organized/docs/sso/index.mdx +295 -0
  393. package/.docs/organized/docs/sso/it-team-faq.mdx +35 -0
  394. package/.docs/organized/docs/sso/jit-provisioning.mdx +101 -0
  395. package/.docs/organized/docs/sso/launch-checklist.mdx +71 -0
  396. package/.docs/organized/docs/sso/login-flows.mdx +101 -0
  397. package/.docs/organized/docs/sso/redirect-uris.mdx +44 -0
  398. package/.docs/organized/docs/sso/saml-security.mdx +122 -0
  399. package/.docs/organized/docs/sso/signing-certificates.mdx +121 -0
  400. package/.docs/organized/docs/sso/single-logout.mdx +45 -0
  401. package/.docs/organized/docs/sso/test-sso.mdx +73 -0
  402. package/.docs/organized/docs/sso/ux/sign-in.mdx +44 -0
  403. package/.docs/organized/docs/user-management/_navigation.mdx +87 -0
  404. package/.docs/organized/docs/user-management/actions.mdx +169 -0
  405. package/.docs/organized/docs/user-management/authkit.mdx +69 -0
  406. package/.docs/organized/docs/user-management/branding.mdx +143 -0
  407. package/.docs/organized/docs/user-management/connect.mdx +110 -0
  408. package/.docs/organized/docs/user-management/custom-emails.mdx +164 -0
  409. package/.docs/organized/docs/user-management/directory-provisioning.mdx +78 -0
  410. package/.docs/organized/docs/user-management/domain-verification.mdx +28 -0
  411. package/.docs/organized/docs/user-management/email-password.mdx +42 -0
  412. package/.docs/organized/docs/user-management/email-verification.mdx +29 -0
  413. package/.docs/organized/docs/user-management/entitlements.mdx +46 -0
  414. package/.docs/organized/docs/user-management/example-apps.mdx +39 -0
  415. package/.docs/organized/docs/user-management/identity-linking.mdx +52 -0
  416. package/.docs/organized/docs/user-management/impersonation.mdx +82 -0
  417. package/.docs/organized/docs/user-management/index.mdx +525 -0
  418. package/.docs/organized/docs/user-management/invitations.mdx +60 -0
  419. package/.docs/organized/docs/user-management/invite-only-signup.mdx +72 -0
  420. package/.docs/organized/docs/user-management/jit-provisioning.mdx +36 -0
  421. package/.docs/organized/docs/user-management/jwt-templates.mdx +278 -0
  422. package/.docs/organized/docs/user-management/magic-auth.mdx +36 -0
  423. package/.docs/organized/docs/user-management/mcp.mdx +146 -0
  424. package/.docs/organized/docs/user-management/metadata.mdx +119 -0
  425. package/.docs/organized/docs/user-management/mfa.mdx +32 -0
  426. package/.docs/organized/docs/user-management/migrations.mdx +20 -0
  427. package/.docs/organized/docs/user-management/modeling-your-app.mdx +149 -0
  428. package/.docs/organized/docs/user-management/organization-policies.mdx +33 -0
  429. package/.docs/organized/docs/user-management/overview.mdx +46 -0
  430. package/.docs/organized/docs/user-management/passkeys.mdx +42 -0
  431. package/.docs/organized/docs/user-management/radar.mdx +127 -0
  432. package/.docs/organized/docs/user-management/roles-and-permissions.mdx +155 -0
  433. package/.docs/organized/docs/user-management/sessions.mdx +101 -0
  434. package/.docs/organized/docs/user-management/social-login.mdx +34 -0
  435. package/.docs/organized/docs/user-management/sso-with-contractors.mdx +85 -0
  436. package/.docs/organized/docs/user-management/sso.mdx +96 -0
  437. package/.docs/organized/docs/user-management/users-organizations.mdx +91 -0
  438. package/.docs/organized/docs/user-management/widgets.mdx +190 -0
  439. package/.docs/organized/docs/vault/_navigation.mdx +14 -0
  440. package/.docs/organized/docs/vault/index.mdx +38 -0
  441. package/.docs/organized/docs/vault/key-context.mdx +32 -0
  442. package/.docs/organized/docs/vault/quick-start.mdx +82 -0
  443. package/README.md +252 -0
  444. package/dist/chunk-64GKEK6G.js +48 -0
  445. package/dist/chunk-64GKEK6G.js.map +1 -0
  446. package/dist/get-tools.d.ts +23 -0
  447. package/dist/get-tools.js +8 -0
  448. package/dist/get-tools.js.map +1 -0
  449. package/dist/index.d.ts +1 -0
  450. package/dist/index.js +552 -0
  451. package/dist/index.js.map +1 -0
  452. package/dist/prepare.d.ts +2 -0
  453. package/dist/prepare.js +269 -0
  454. package/dist/prepare.js.map +1 -0
  455. package/package.json +49 -0
package/dist/index.js ADDED
@@ -0,0 +1,552 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ getTools
4
+ } from "./chunk-64GKEK6G.js";
5
+
6
+ // src/index.ts
7
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
8
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
9
+ import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
10
+ import { promises as fs } from "fs";
11
+ import path from "path";
12
+ var server = new Server(
13
+ {
14
+ name: "@workos/mcp-docs-server",
15
+ version: "0.1.0"
16
+ },
17
+ {
18
+ capabilities: {
19
+ tools: {}
20
+ }
21
+ }
22
+ );
23
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
24
+ const tools = await getTools();
25
+ return {
26
+ tools: [
27
+ {
28
+ name: "workos_docs",
29
+ description: "Get WorkOS SDK documentation content by path. Use this when you know the documentation structure or want to browse hierarchically. If you don't know the exact path, use workos_search first to find relevant documents. Returns the requested doc content plus a list of other docs in the same directory to help with navigation.",
30
+ inputSchema: {
31
+ type: "object",
32
+ properties: {
33
+ path: {
34
+ type: "string",
35
+ description: 'Documentation path to retrieve. Use forward slashes to navigate folders. Examples: "sso/overview", "directory-sync/introduction", "user-management/authentication". Try broad categories first (e.g., "sso", "directory-sync") to see available sub-pages. Omit file extensions (.md, .mdx).'
36
+ }
37
+ },
38
+ required: ["path"]
39
+ }
40
+ },
41
+ {
42
+ name: "workos_search",
43
+ description: "Search through all WorkOS documentation for specific keywords or phrases. Use this when you need to find information but don't know the exact documentation path. Returns snippets of matching content with their file paths.",
44
+ inputSchema: {
45
+ type: "object",
46
+ properties: {
47
+ query: {
48
+ type: "string",
49
+ description: 'Search terms to look for in the documentation. Can be keywords, method names, error messages, or phrases. Examples: "SSO authentication", "directory sync webhook", "MagicAuth", "SAML metadata".'
50
+ },
51
+ maxResults: {
52
+ type: "number",
53
+ description: "Maximum number of results to return. Defaults to 10.",
54
+ default: 10
55
+ }
56
+ },
57
+ required: ["query"]
58
+ }
59
+ },
60
+ {
61
+ name: "workos_examples",
62
+ description: "Get WorkOS SDK code examples. Use this after checking documentation to find practical implementation examples. Returns code examples grouped by feature or use case.",
63
+ inputSchema: {
64
+ type: "object",
65
+ properties: {
66
+ example: {
67
+ type: "string",
68
+ description: 'Example name or group to retrieve. Common groups: "sso", "directory-sync", "user-management", "audit-logs", "webhooks". Start with the feature name to see all related examples.'
69
+ }
70
+ },
71
+ required: ["example"]
72
+ }
73
+ },
74
+ {
75
+ name: "workos_changelogs",
76
+ description: `Get WorkOS package changelogs to check version history, breaking changes, and new features. IMPORTANT: For general WorkOS platform updates, new features, or "what's new" questions, always use the exact package name "workos-platform" (not "workos"). Use SDK-specific packages like "@workos/node" only for SDK version compatibility and migration guides.`,
77
+ inputSchema: {
78
+ type: "object",
79
+ properties: {
80
+ package: {
81
+ type: "string",
82
+ description: 'Package name to get changelog for. MUST use exact string "workos-platform" (not "workos") for general platform updates and new features from RSS feed. Use "@workos/node", "@workos/python", "@workos/ruby", "@workos/go", "@workos/php" for SDK-specific changelogs.'
83
+ }
84
+ },
85
+ required: ["package"]
86
+ }
87
+ }
88
+ ]
89
+ };
90
+ });
91
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
92
+ const { name, arguments: args } = request.params;
93
+ const tools = await getTools();
94
+ try {
95
+ switch (name) {
96
+ case "workos_docs": {
97
+ const docPath = args?.path;
98
+ if (!docPath) {
99
+ throw new Error("Path parameter is required for workos_docs");
100
+ }
101
+ if (tools.docs.docsPath.startsWith("http")) {
102
+ return {
103
+ content: [
104
+ {
105
+ type: "text",
106
+ text: `Documentation for ${docPath} would be fetched from ${tools.docs.docsPath}`
107
+ }
108
+ ]
109
+ };
110
+ } else {
111
+ const tryPaths = [
112
+ path.join(tools.docs.docsPath, `${docPath}.md`),
113
+ path.join(tools.docs.docsPath, `${docPath}.mdx`),
114
+ path.join(tools.docs.docsPath, `${docPath}/index.md`),
115
+ path.join(tools.docs.docsPath, `${docPath}/index.mdx`)
116
+ ];
117
+ for (const tryPath of tryPaths) {
118
+ try {
119
+ const content = await fs.readFile(tryPath, "utf-8");
120
+ const fileDir = path.dirname(tryPath);
121
+ const parentDir = path.dirname(fileDir);
122
+ const glob2 = await import("fast-glob");
123
+ const siblingDocs = await glob2.default(`${fileDir}/*.{md,mdx}`);
124
+ const parentDocs = await glob2.default(`${parentDir}/*.{md,mdx}`);
125
+ const siblingPaths = siblingDocs.map((p) => path.relative(tools.docs.docsPath, p).replace(/\.(mdx?|md)$/, "")).filter((p) => !p.endsWith("/index")).sort();
126
+ const parentPaths = parentDocs.map((p) => path.relative(tools.docs.docsPath, p).replace(/\.(mdx?|md)$/, "")).filter((p) => !p.endsWith("/index")).sort();
127
+ const subdirs = await glob2.default(`${fileDir}/*/`, { onlyDirectories: true });
128
+ const subdirPaths = subdirs.map((p) => path.relative(tools.docs.docsPath, p).replace(/\/$/, "")).sort();
129
+ let navigationHint = "\n\n---\n### Navigation Hints\n";
130
+ if (subdirPaths.length > 0) {
131
+ navigationHint += `
132
+ **Subdirectories in ${path.relative(tools.docs.docsPath, fileDir)}:**
133
+ `;
134
+ navigationHint += subdirPaths.map((p) => `- ${p}/`).join("\n");
135
+ }
136
+ if (siblingPaths.length > 0) {
137
+ navigationHint += `
138
+
139
+ **Other pages in ${path.relative(tools.docs.docsPath, fileDir)}:**
140
+ `;
141
+ navigationHint += siblingPaths.map((p) => `- ${p}`).join("\n");
142
+ }
143
+ if (parentPaths.length > 0 && fileDir !== tools.docs.docsPath) {
144
+ navigationHint += `
145
+
146
+ **Parent directory pages:**
147
+ `;
148
+ navigationHint += parentPaths.map((p) => `- ${p}`).join("\n");
149
+ }
150
+ navigationHint += "\n\n\u{1F4A1} **Tip:** Use these paths with workos_docs to explore related documentation.";
151
+ return {
152
+ content: [
153
+ {
154
+ type: "text",
155
+ text: content + navigationHint
156
+ }
157
+ ]
158
+ };
159
+ } catch {
160
+ }
161
+ }
162
+ const glob = await import("fast-glob");
163
+ const allDocs = await glob.default(`${tools.docs.docsPath}/**/*.{md,mdx}`);
164
+ const relativePaths = allDocs.map((p) => path.relative(tools.docs.docsPath, p).replace(/\.(mdx?|md)$/, ""));
165
+ const searchTerm = docPath.toLowerCase();
166
+ const searchParts = searchTerm.split("/");
167
+ const lastPart = searchParts[searchParts.length - 1];
168
+ const similarPaths = relativePaths.filter((p) => {
169
+ const pLower = p.toLowerCase();
170
+ return pLower.includes(searchTerm) || searchTerm.includes(pLower.split("/").pop() || "") || pLower.includes(lastPart);
171
+ }).slice(0, 10);
172
+ const topLevelDirs = [...new Set(relativePaths.map((p) => p.split("/")[0]))].filter((d) => d && !d.includes(".")).sort();
173
+ let parentDirSuggestions = "";
174
+ if (searchParts.length > 1) {
175
+ const parentPath = searchParts.slice(0, -1).join("/");
176
+ const docsInParent = relativePaths.filter((p) => p.startsWith(parentPath + "/")).map((p) => p.replace(parentPath + "/", "").split("/")[0]).filter((v, i, a) => a.indexOf(v) === i).slice(0, 10);
177
+ if (docsInParent.length > 0) {
178
+ parentDirSuggestions = `
179
+
180
+ **Available pages in "${parentPath}":**
181
+ ${docsInParent.map((p) => `- ${parentPath}/${p}`).join("\n")}`;
182
+ }
183
+ }
184
+ let errorMessage = `\u{1F4DA} Documentation path "${docPath}" not found.
185
+
186
+ `;
187
+ if (similarPaths.length > 0) {
188
+ errorMessage += `**Similar documentation pages:**
189
+ ${similarPaths.map((p) => `- ${p}`).join("\n")}`;
190
+ }
191
+ errorMessage += parentDirSuggestions;
192
+ errorMessage += `
193
+
194
+ **Top-level documentation categories:**
195
+ ${topLevelDirs.map((d) => `- ${d}/`).join("\n")}`;
196
+ errorMessage += `
197
+
198
+ \u{1F4A1} **Tips for exploring WorkOS docs:**
199
+ - Start with a top-level category (e.g., "sso", "directory-sync")
200
+ - Browse subdirectories to find specific topics
201
+ - Common paths include:
202
+ - sso/overview
203
+ - directory-sync/introduction
204
+ - user-management/authentication
205
+ - audit-logs/overview
206
+ - webhooks/overview`;
207
+ throw new Error(errorMessage);
208
+ }
209
+ }
210
+ case "workos_search": {
211
+ const query = args?.query;
212
+ const maxResults = args?.maxResults || 10;
213
+ if (!query) {
214
+ throw new Error("Query parameter is required for workos_search");
215
+ }
216
+ if (tools.docs.docsPath.startsWith("http")) {
217
+ return {
218
+ content: [
219
+ {
220
+ type: "text",
221
+ text: `Search functionality for remote documentation is not yet implemented. Would search for "${query}" in ${tools.docs.docsPath}`
222
+ }
223
+ ]
224
+ };
225
+ } else {
226
+ const glob = await import("fast-glob");
227
+ try {
228
+ const allDocs = await glob.default(`${tools.docs.docsPath}/**/*.{md,mdx}`);
229
+ const searchResults = [];
230
+ for (const docFile of allDocs) {
231
+ try {
232
+ const relativePath = path.relative(tools.docs.docsPath, docFile).replace(/\.(mdx?|md)$/, "");
233
+ const matches = [];
234
+ const content = await fs.readFile(docFile, "utf-8");
235
+ const lines = content.split("\n");
236
+ const queryLower = query.toLowerCase();
237
+ for (let i = 0; i < lines.length; i++) {
238
+ if (lines[i].toLowerCase().includes(queryLower)) {
239
+ const context = [];
240
+ for (let j = Math.max(0, i - 2); j < i; j++) {
241
+ context.push(lines[j]);
242
+ }
243
+ const afterContext = [];
244
+ for (let j = i + 1; j < Math.min(lines.length, i + 3); j++) {
245
+ afterContext.push(lines[j]);
246
+ }
247
+ matches.push({
248
+ lineNumber: i + 1,
249
+ line: lines[i],
250
+ context: [...context, ...afterContext]
251
+ });
252
+ if (matches.length >= 3) break;
253
+ }
254
+ }
255
+ if (matches.length > 0) {
256
+ searchResults.push({
257
+ file: relativePath,
258
+ matches
259
+ });
260
+ }
261
+ } catch (error) {
262
+ console.error(`Error searching in ${docFile}:`, error);
263
+ }
264
+ }
265
+ searchResults.sort((a, b) => b.matches.length - a.matches.length);
266
+ const topResults = searchResults.slice(0, maxResults);
267
+ if (topResults.length === 0) {
268
+ throw new Error(`No results found for "${query}"`);
269
+ }
270
+ let result = `# Search Results for "${query}"
271
+
272
+ `;
273
+ result += `Found ${searchResults.length} document(s) containing matches.
274
+
275
+ `;
276
+ for (const docResult of topResults) {
277
+ result += `## \u{1F4C4} ${docResult.file}
278
+
279
+ `;
280
+ for (const match of docResult.matches) {
281
+ result += `**Line ${match.lineNumber}:**
282
+ `;
283
+ result += "```\n";
284
+ if (match.context.length > 0) {
285
+ result += match.context.join("\n") + "\n";
286
+ }
287
+ result += `>>> ${match.line}
288
+ `;
289
+ result += "```\n\n";
290
+ }
291
+ result += `\u27A1\uFE0F Use \`workos_docs\` with path "${docResult.file}" to see the full document.
292
+
293
+ `;
294
+ result += "---\n\n";
295
+ }
296
+ result += `
297
+ \u{1F4A1} **Search Tips:**
298
+ - Use specific terms or method names for better results
299
+ - Try different variations of your search terms
300
+ - Use the document paths shown above with workos_docs to read full context
301
+ - Combine multiple search terms for more specific results`;
302
+ return {
303
+ content: [
304
+ {
305
+ type: "text",
306
+ text: result
307
+ }
308
+ ]
309
+ };
310
+ } catch (error) {
311
+ if (error instanceof Error && error.message.includes("No results found")) {
312
+ let errorMessage = `\u{1F50D} No results found for "${query}".
313
+
314
+ `;
315
+ const words = query.split(/\s+/).filter((w) => w.length > 2);
316
+ if (words.length > 1) {
317
+ errorMessage += `**Try searching for individual terms:**
318
+ `;
319
+ errorMessage += words.map((w) => `- "${w}"`).join("\n");
320
+ errorMessage += "\n\n";
321
+ }
322
+ errorMessage += `**Search suggestions:**
323
+ - Use more specific technical terms (e.g., "SAML", "OAuth", "webhook")
324
+ - Try searching for method or class names
325
+ - Search for error messages or status codes
326
+ - Use feature names like "SSO", "Directory Sync", "MagicAuth"
327
+
328
+ **Alternative approaches:**
329
+ - Use \`workos_docs\` to browse documentation by category
330
+ - Start with top-level paths like "sso", "directory-sync", "user-management"`;
331
+ throw new Error(errorMessage);
332
+ }
333
+ throw error;
334
+ }
335
+ }
336
+ }
337
+ case "workos_examples": {
338
+ const example = args?.example;
339
+ if (!example) {
340
+ throw new Error("Example parameter is required for workos_examples");
341
+ }
342
+ if (tools.examples.examplesPath.startsWith("http")) {
343
+ return {
344
+ content: [
345
+ {
346
+ type: "text",
347
+ text: `Example ${example} would be fetched from ${tools.examples.examplesPath}`
348
+ }
349
+ ]
350
+ };
351
+ } else {
352
+ const exampleDir = path.join(tools.examples.examplesPath, example);
353
+ const indexPath = path.join(exampleDir, "index.json");
354
+ try {
355
+ const indexContent = await fs.readFile(indexPath, "utf-8");
356
+ const exampleGroup = JSON.parse(indexContent);
357
+ let result = `# ${exampleGroup.name} Examples
358
+
359
+ `;
360
+ for (const file of exampleGroup.files) {
361
+ const filePath = path.join(tools.examples.examplesPath, file);
362
+ const fileContent = await fs.readFile(filePath, "utf-8");
363
+ const fileName = path.basename(file);
364
+ result += `## ${fileName}
365
+
366
+ \`\`\`typescript
367
+ ${fileContent}
368
+ \`\`\`
369
+
370
+ `;
371
+ }
372
+ const glob = await import("fast-glob");
373
+ const allExampleDirs = await glob.default(`${tools.examples.examplesPath}/*/index.json`);
374
+ const otherExamples = allExampleDirs.map((p) => path.basename(path.dirname(p))).filter((e) => e !== example).sort();
375
+ if (otherExamples.length > 0) {
376
+ result += `
377
+ ---
378
+ ### Other Example Groups
379
+ `;
380
+ result += otherExamples.map((e) => `- ${e}`).join("\n");
381
+ result += "\n\n\u{1F4A1} **Tip:** Use these names with workos_examples to see other code examples.";
382
+ }
383
+ return {
384
+ content: [
385
+ {
386
+ type: "text",
387
+ text: result
388
+ }
389
+ ]
390
+ };
391
+ } catch {
392
+ const glob = await import("fast-glob");
393
+ const allExampleDirs = await glob.default(`${tools.examples.examplesPath}/*/index.json`);
394
+ const availableExamples = allExampleDirs.map((p) => path.basename(path.dirname(p))).sort();
395
+ let errorMessage = `\u{1F4DD} Example group "${example}" not found.
396
+
397
+ `;
398
+ if (availableExamples.length > 0) {
399
+ errorMessage += `**Available example groups:**
400
+ ${availableExamples.map((e) => `- ${e}`).join("\n")}`;
401
+ const similar = availableExamples.filter(
402
+ (e) => e.toLowerCase().includes(example.toLowerCase()) || example.toLowerCase().includes(e.toLowerCase())
403
+ );
404
+ if (similar.length > 0 && similar.length < availableExamples.length) {
405
+ errorMessage += `
406
+
407
+ **Did you mean:**
408
+ ${similar.map((e) => `- ${e}`).join("\n")}`;
409
+ }
410
+ }
411
+ errorMessage += `
412
+
413
+ \u{1F4A1} **Tips for using examples:**
414
+ - Check workos_docs first to understand the concept
415
+ - Use example group names that match features (e.g., "sso", "directory-sync")
416
+ - Examples show practical implementations with best practices`;
417
+ throw new Error(errorMessage);
418
+ }
419
+ }
420
+ }
421
+ case "workos_changelogs": {
422
+ const packageName = args?.package;
423
+ if (!packageName) {
424
+ throw new Error("Package parameter is required for workos_changelogs");
425
+ }
426
+ if (tools.changelogs.changelogsPath.startsWith("http")) {
427
+ return {
428
+ content: [
429
+ {
430
+ type: "text",
431
+ text: `Changelog for ${packageName} would be fetched from ${tools.changelogs.changelogsPath}`
432
+ }
433
+ ]
434
+ };
435
+ } else {
436
+ const changelogPath = path.join(tools.changelogs.changelogsPath, `${packageName}.json`);
437
+ try {
438
+ const content = await fs.readFile(changelogPath, "utf-8");
439
+ const changelog = JSON.parse(content);
440
+ let result = `# ${packageName} Changelog
441
+
442
+ `;
443
+ for (const entry of changelog) {
444
+ if (entry.source === "rss") {
445
+ result += `## ${entry.version}
446
+ `;
447
+ result += `**Date:** ${entry.date}
448
+ `;
449
+ if (entry.url) {
450
+ result += `**Link:** ${entry.url}
451
+ `;
452
+ }
453
+ result += "\n";
454
+ for (const change of entry.changes) {
455
+ result += `${change}
456
+ `;
457
+ }
458
+ result += "\n---\n\n";
459
+ } else {
460
+ result += `## [${entry.version}] - ${entry.date}
461
+
462
+ `;
463
+ for (const change of entry.changes) {
464
+ result += `- ${change}
465
+ `;
466
+ }
467
+ result += "\n";
468
+ }
469
+ }
470
+ const glob = await import("fast-glob");
471
+ const allChangelogs = await glob.default(`${tools.changelogs.changelogsPath}/*.json`);
472
+ const otherPackages = allChangelogs.map((p) => path.basename(p, ".json")).filter((p) => p !== packageName).sort();
473
+ if (otherPackages.length > 0) {
474
+ result += `
475
+ ---
476
+ ### Other Package Changelogs
477
+ `;
478
+ result += otherPackages.map((p) => `- ${p}`).join("\n");
479
+ result += "\n\n\u{1F4A1} **Tip:** Use these package names with workos_changelogs to see their version history.";
480
+ }
481
+ return {
482
+ content: [
483
+ {
484
+ type: "text",
485
+ text: result
486
+ }
487
+ ]
488
+ };
489
+ } catch {
490
+ const glob = await import("fast-glob");
491
+ const allChangelogs = await glob.default(`${tools.changelogs.changelogsPath}/*.json`);
492
+ const availablePackages = allChangelogs.map((p) => path.basename(p, ".json")).sort();
493
+ let errorMessage = `\u{1F4CB} Changelog for package "${packageName}" not found.
494
+
495
+ `;
496
+ if (availablePackages.length > 0) {
497
+ errorMessage += `**Available package changelogs:**
498
+ ${availablePackages.map((p) => `- ${p}`).join("\n")}`;
499
+ const similar = availablePackages.filter(
500
+ (p) => p.toLowerCase().includes(packageName.toLowerCase()) || packageName.toLowerCase().includes(p.toLowerCase())
501
+ );
502
+ if (similar.length > 0 && similar.length < availablePackages.length) {
503
+ errorMessage += `
504
+
505
+ **Did you mean:**
506
+ ${similar.map((p) => `- ${p}`).join("\n")}`;
507
+ }
508
+ }
509
+ errorMessage += `
510
+
511
+ \u{1F4A1} **Choose the right changelog:**
512
+ - **workos-platform** - For product announcements, new features, service updates, or "what's new" questions
513
+ - **@workos/node** - For Node.js SDK version history, migration guides, and troubleshooting
514
+ - **@workos/python** - For Python SDK version history and compatibility
515
+ - **@workos/ruby** - For Ruby SDK version history and compatibility
516
+ - **@workos/go** - For Go SDK version history and compatibility
517
+ - **@workos/php** - For PHP SDK version history and compatibility
518
+ - **@workos/kotlin** - For Kotlin SDK version history and compatibility
519
+
520
+ \u{1F916} **AI Assistant tip**: If the user asks about "what's new", "recent updates", or "new features", use workos-platform. If they mention a specific SDK, version number, or technical issue, use the relevant SDK package.`;
521
+ throw new Error(errorMessage);
522
+ }
523
+ }
524
+ }
525
+ default:
526
+ throw new Error(`Unknown tool: ${name}`);
527
+ }
528
+ } catch (error) {
529
+ return {
530
+ content: [
531
+ {
532
+ type: "text",
533
+ text: `Error: ${error instanceof Error ? error.message : String(error)}`
534
+ }
535
+ ],
536
+ isError: true
537
+ };
538
+ }
539
+ });
540
+ async function main() {
541
+ const transport = new StdioServerTransport();
542
+ await server.connect(transport);
543
+ console.error("WorkOS MCP Documentation Server running on stdio");
544
+ }
545
+ main().catch((error) => {
546
+ console.error("Fatal error in main():", error);
547
+ process.exit(1);
548
+ });
549
+ export {
550
+ getTools
551
+ };
552
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { Server } from '@modelcontextprotocol/sdk/server/index.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';\nimport { promises as fs } from 'fs';\nimport path from 'path';\nimport { getTools } from './get-tools.js';\n\nconst server = new Server(\n {\n name: '@workos/mcp-docs-server',\n version: '0.1.0',\n },\n {\n capabilities: {\n tools: {},\n },\n },\n);\n\n// List available tools\nserver.setRequestHandler(ListToolsRequestSchema, async () => {\n const tools = await getTools();\n\n return {\n tools: [\n {\n name: 'workos_docs',\n description:\n \"Get WorkOS SDK documentation content by path. Use this when you know the documentation structure or want to browse hierarchically. If you don't know the exact path, use workos_search first to find relevant documents. Returns the requested doc content plus a list of other docs in the same directory to help with navigation.\",\n inputSchema: {\n type: 'object',\n properties: {\n path: {\n type: 'string',\n description:\n 'Documentation path to retrieve. Use forward slashes to navigate folders. Examples: \"sso/overview\", \"directory-sync/introduction\", \"user-management/authentication\". Try broad categories first (e.g., \"sso\", \"directory-sync\") to see available sub-pages. Omit file extensions (.md, .mdx).',\n },\n },\n required: ['path'],\n },\n },\n {\n name: 'workos_search',\n description:\n \"Search through all WorkOS documentation for specific keywords or phrases. Use this when you need to find information but don't know the exact documentation path. Returns snippets of matching content with their file paths.\",\n inputSchema: {\n type: 'object',\n properties: {\n query: {\n type: 'string',\n description:\n 'Search terms to look for in the documentation. Can be keywords, method names, error messages, or phrases. Examples: \"SSO authentication\", \"directory sync webhook\", \"MagicAuth\", \"SAML metadata\".',\n },\n maxResults: {\n type: 'number',\n description: 'Maximum number of results to return. Defaults to 10.',\n default: 10,\n },\n },\n required: ['query'],\n },\n },\n {\n name: 'workos_examples',\n description:\n 'Get WorkOS SDK code examples. Use this after checking documentation to find practical implementation examples. Returns code examples grouped by feature or use case.',\n inputSchema: {\n type: 'object',\n properties: {\n example: {\n type: 'string',\n description:\n 'Example name or group to retrieve. Common groups: \"sso\", \"directory-sync\", \"user-management\", \"audit-logs\", \"webhooks\". Start with the feature name to see all related examples.',\n },\n },\n required: ['example'],\n },\n },\n {\n name: 'workos_changelogs',\n description:\n 'Get WorkOS package changelogs to check version history, breaking changes, and new features. IMPORTANT: For general WorkOS platform updates, new features, or \"what\\'s new\" questions, always use the exact package name \"workos-platform\" (not \"workos\"). Use SDK-specific packages like \"@workos/node\" only for SDK version compatibility and migration guides.',\n inputSchema: {\n type: 'object',\n properties: {\n package: {\n type: 'string',\n description:\n 'Package name to get changelog for. MUST use exact string \"workos-platform\" (not \"workos\") for general platform updates and new features from RSS feed. Use \"@workos/node\", \"@workos/python\", \"@workos/ruby\", \"@workos/go\", \"@workos/php\" for SDK-specific changelogs.',\n },\n },\n required: ['package'],\n },\n },\n ],\n };\n});\n\n// Handle tool calls\nserver.setRequestHandler(CallToolRequestSchema, async (request) => {\n const { name, arguments: args } = request.params;\n const tools = await getTools();\n\n try {\n switch (name) {\n case 'workos_docs': {\n const docPath = args?.path as string;\n if (!docPath) {\n throw new Error('Path parameter is required for workos_docs');\n }\n\n // Try to read from local docs first\n if (tools.docs.docsPath.startsWith('http')) {\n // Remote fallback - would need HTTP client in real implementation\n return {\n content: [\n {\n type: 'text',\n text: `Documentation for ${docPath} would be fetched from ${tools.docs.docsPath}`,\n },\n ],\n };\n } else {\n // Read from local file system\n const tryPaths = [\n path.join(tools.docs.docsPath, `${docPath}.md`),\n path.join(tools.docs.docsPath, `${docPath}.mdx`),\n path.join(tools.docs.docsPath, `${docPath}/index.md`),\n path.join(tools.docs.docsPath, `${docPath}/index.mdx`),\n ];\n\n for (const tryPath of tryPaths) {\n try {\n const content = await fs.readFile(tryPath, 'utf-8');\n\n // Get the directory of the found file\n const fileDir = path.dirname(tryPath);\n const parentDir = path.dirname(fileDir);\n\n // Get other docs in the same directory\n const glob = await import('fast-glob');\n const siblingDocs = await glob.default(`${fileDir}/*.{md,mdx}`);\n const parentDocs = await glob.default(`${parentDir}/*.{md,mdx}`);\n\n // Format sibling paths relative to docs root\n const siblingPaths = siblingDocs\n .map((p) => path.relative(tools.docs.docsPath, p).replace(/\\.(mdx?|md)$/, ''))\n .filter((p) => !p.endsWith('/index')) // Remove index files\n .sort();\n\n const parentPaths = parentDocs\n .map((p) => path.relative(tools.docs.docsPath, p).replace(/\\.(mdx?|md)$/, ''))\n .filter((p) => !p.endsWith('/index'))\n .sort();\n\n // Get subdirectories\n const subdirs = await glob.default(`${fileDir}/*/`, { onlyDirectories: true });\n const subdirPaths = subdirs.map((p) => path.relative(tools.docs.docsPath, p).replace(/\\/$/, '')).sort();\n\n let navigationHint = '\\n\\n---\\n### Navigation Hints\\n';\n\n if (subdirPaths.length > 0) {\n navigationHint += `\\n**Subdirectories in ${path.relative(tools.docs.docsPath, fileDir)}:**\\n`;\n navigationHint += subdirPaths.map((p) => `- ${p}/`).join('\\n');\n }\n\n if (siblingPaths.length > 0) {\n navigationHint += `\\n\\n**Other pages in ${path.relative(tools.docs.docsPath, fileDir)}:**\\n`;\n navigationHint += siblingPaths.map((p) => `- ${p}`).join('\\n');\n }\n\n if (parentPaths.length > 0 && fileDir !== tools.docs.docsPath) {\n navigationHint += `\\n\\n**Parent directory pages:**\\n`;\n navigationHint += parentPaths.map((p) => `- ${p}`).join('\\n');\n }\n\n navigationHint += '\\n\\nšŸ’” **Tip:** Use these paths with workos_docs to explore related documentation.';\n\n return {\n content: [\n {\n type: 'text',\n text: content + navigationHint,\n },\n ],\n };\n } catch {\n // Continue to next path\n }\n }\n\n // File not found, suggest similar paths\n const glob = await import('fast-glob');\n const allDocs = await glob.default(`${tools.docs.docsPath}/**/*.{md,mdx}`);\n const relativePaths = allDocs.map((p) => path.relative(tools.docs.docsPath, p).replace(/\\.(mdx?|md)$/, ''));\n\n // Find similar paths\n const searchTerm = docPath.toLowerCase();\n const searchParts = searchTerm.split('/');\n const lastPart = searchParts[searchParts.length - 1];\n\n // Try to find docs that match any part of the search term\n const similarPaths = relativePaths\n .filter((p) => {\n const pLower = p.toLowerCase();\n return (\n pLower.includes(searchTerm) ||\n searchTerm.includes(pLower.split('/').pop() || '') ||\n pLower.includes(lastPart)\n );\n })\n .slice(0, 10);\n\n // Get top-level directories\n const topLevelDirs = [...new Set(relativePaths.map((p) => p.split('/')[0]))]\n .filter((d) => d && !d.includes('.'))\n .sort();\n\n // Try to find the parent directory if the path contains a slash\n let parentDirSuggestions = '';\n if (searchParts.length > 1) {\n const parentPath = searchParts.slice(0, -1).join('/');\n const docsInParent = relativePaths\n .filter((p) => p.startsWith(parentPath + '/'))\n .map((p) => p.replace(parentPath + '/', '').split('/')[0])\n .filter((v, i, a) => a.indexOf(v) === i) // unique\n .slice(0, 10);\n\n if (docsInParent.length > 0) {\n parentDirSuggestions = `\\n\\n**Available pages in \"${parentPath}\":**\\n${docsInParent.map((p) => `- ${parentPath}/${p}`).join('\\n')}`;\n }\n }\n\n let errorMessage = `šŸ“š Documentation path \"${docPath}\" not found.\\n\\n`;\n\n if (similarPaths.length > 0) {\n errorMessage += `**Similar documentation pages:**\\n${similarPaths.map((p) => `- ${p}`).join('\\n')}`;\n }\n\n errorMessage += parentDirSuggestions;\n\n errorMessage += `\\n\\n**Top-level documentation categories:**\\n${topLevelDirs.map((d) => `- ${d}/`).join('\\n')}`;\n\n errorMessage += `\\n\\nšŸ’” **Tips for exploring WorkOS docs:**\n- Start with a top-level category (e.g., \"sso\", \"directory-sync\")\n- Browse subdirectories to find specific topics\n- Common paths include:\n - sso/overview\n - directory-sync/introduction\n - user-management/authentication\n - audit-logs/overview\n - webhooks/overview`;\n\n throw new Error(errorMessage);\n }\n }\n\n case 'workos_search': {\n const query = args?.query as string;\n const maxResults = (args?.maxResults as number) || 10;\n\n if (!query) {\n throw new Error('Query parameter is required for workos_search');\n }\n\n if (tools.docs.docsPath.startsWith('http')) {\n return {\n content: [\n {\n type: 'text',\n text: `Search functionality for remote documentation is not yet implemented. Would search for \"${query}\" in ${tools.docs.docsPath}`,\n },\n ],\n };\n } else {\n const glob = await import('fast-glob');\n\n try {\n // Get all documentation files\n const allDocs = await glob.default(`${tools.docs.docsPath}/**/*.{md,mdx}`);\n\n // Search for the query in all files\n const searchResults: Array<{\n file: string;\n matches: Array<{\n lineNumber: number;\n line: string;\n context: string[];\n }>;\n }> = [];\n\n for (const docFile of allDocs) {\n try {\n const relativePath = path.relative(tools.docs.docsPath, docFile).replace(/\\.(mdx?|md)$/, '');\n const matches: Array<{\n lineNumber: number;\n line: string;\n context: string[];\n }> = [];\n\n // Use Node.js file reading to search\n const content = await fs.readFile(docFile, 'utf-8');\n const lines = content.split('\\n');\n const queryLower = query.toLowerCase();\n\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].toLowerCase().includes(queryLower)) {\n const context: string[] = [];\n // Get 2 lines before\n for (let j = Math.max(0, i - 2); j < i; j++) {\n context.push(lines[j]);\n }\n // Get 2 lines after\n const afterContext: string[] = [];\n for (let j = i + 1; j < Math.min(lines.length, i + 3); j++) {\n afterContext.push(lines[j]);\n }\n\n matches.push({\n lineNumber: i + 1,\n line: lines[i],\n context: [...context, ...afterContext],\n });\n\n // Limit matches per file\n if (matches.length >= 3) break;\n }\n }\n\n if (matches.length > 0) {\n searchResults.push({\n file: relativePath,\n matches: matches,\n });\n }\n } catch (error) {\n // Log error for debugging but continue with other files\n console.error(`Error searching in ${docFile}:`, error);\n }\n }\n\n // Sort results by number of matches (relevance)\n searchResults.sort((a, b) => b.matches.length - a.matches.length);\n const topResults = searchResults.slice(0, maxResults);\n\n if (topResults.length === 0) {\n throw new Error(`No results found for \"${query}\"`);\n }\n\n // Format results\n let result = `# Search Results for \"${query}\"\\n\\n`;\n result += `Found ${searchResults.length} document(s) containing matches.\\n\\n`;\n\n for (const docResult of topResults) {\n result += `## šŸ“„ ${docResult.file}\\n\\n`;\n\n for (const match of docResult.matches) {\n result += `**Line ${match.lineNumber}:**\\n`;\n result += '```\\n';\n if (match.context.length > 0) {\n result += match.context.join('\\n') + '\\n';\n }\n result += `>>> ${match.line}\\n`;\n result += '```\\n\\n';\n }\n\n result += `āž”ļø Use \\`workos_docs\\` with path \"${docResult.file}\" to see the full document.\\n\\n`;\n result += '---\\n\\n';\n }\n\n // Add search tips\n result += `\\nšŸ’” **Search Tips:**\n- Use specific terms or method names for better results\n- Try different variations of your search terms\n- Use the document paths shown above with workos_docs to read full context\n- Combine multiple search terms for more specific results`;\n\n return {\n content: [\n {\n type: 'text',\n text: result,\n },\n ],\n };\n } catch (error) {\n if (error instanceof Error && error.message.includes('No results found')) {\n // Provide helpful suggestions when no results found\n let errorMessage = `šŸ” No results found for \"${query}\".\\n\\n`;\n\n // Suggest breaking down the query\n const words = query.split(/\\s+/).filter((w) => w.length > 2);\n if (words.length > 1) {\n errorMessage += `**Try searching for individual terms:**\\n`;\n errorMessage += words.map((w) => `- \"${w}\"`).join('\\n');\n errorMessage += '\\n\\n';\n }\n\n errorMessage += `**Search suggestions:**\n- Use more specific technical terms (e.g., \"SAML\", \"OAuth\", \"webhook\")\n- Try searching for method or class names\n- Search for error messages or status codes\n- Use feature names like \"SSO\", \"Directory Sync\", \"MagicAuth\"\n\n**Alternative approaches:**\n- Use \\`workos_docs\\` to browse documentation by category\n- Start with top-level paths like \"sso\", \"directory-sync\", \"user-management\"`;\n\n throw new Error(errorMessage);\n }\n throw error;\n }\n }\n }\n\n case 'workos_examples': {\n const example = args?.example as string;\n if (!example) {\n throw new Error('Example parameter is required for workos_examples');\n }\n\n if (tools.examples.examplesPath.startsWith('http')) {\n return {\n content: [\n {\n type: 'text',\n text: `Example ${example} would be fetched from ${tools.examples.examplesPath}`,\n },\n ],\n };\n } else {\n // Read example files from local file system\n const exampleDir = path.join(tools.examples.examplesPath, example);\n const indexPath = path.join(exampleDir, 'index.json');\n\n try {\n const indexContent = await fs.readFile(indexPath, 'utf-8');\n const exampleGroup = JSON.parse(indexContent);\n\n let result = `# ${exampleGroup.name} Examples\\n\\n`;\n\n for (const file of exampleGroup.files) {\n const filePath = path.join(tools.examples.examplesPath, file);\n const fileContent = await fs.readFile(filePath, 'utf-8');\n const fileName = path.basename(file);\n\n result += `## ${fileName}\\n\\n\\`\\`\\`typescript\\n${fileContent}\\n\\`\\`\\`\\n\\n`;\n }\n\n // Add navigation hints for other example groups\n const glob = await import('fast-glob');\n const allExampleDirs = await glob.default(`${tools.examples.examplesPath}/*/index.json`);\n const otherExamples = allExampleDirs\n .map((p) => path.basename(path.dirname(p)))\n .filter((e) => e !== example)\n .sort();\n\n if (otherExamples.length > 0) {\n result += `\\n---\\n### Other Example Groups\\n`;\n result += otherExamples.map((e) => `- ${e}`).join('\\n');\n result += '\\n\\nšŸ’” **Tip:** Use these names with workos_examples to see other code examples.';\n }\n\n return {\n content: [\n {\n type: 'text',\n text: result,\n },\n ],\n };\n } catch {\n // Get available example groups\n const glob = await import('fast-glob');\n const allExampleDirs = await glob.default(`${tools.examples.examplesPath}/*/index.json`);\n const availableExamples = allExampleDirs.map((p) => path.basename(path.dirname(p))).sort();\n\n let errorMessage = `šŸ“ Example group \"${example}\" not found.\\n\\n`;\n\n if (availableExamples.length > 0) {\n errorMessage += `**Available example groups:**\\n${availableExamples.map((e) => `- ${e}`).join('\\n')}`;\n\n // Find similar examples\n const similar = availableExamples.filter(\n (e) =>\n e.toLowerCase().includes(example.toLowerCase()) || example.toLowerCase().includes(e.toLowerCase()),\n );\n\n if (similar.length > 0 && similar.length < availableExamples.length) {\n errorMessage += `\\n\\n**Did you mean:**\\n${similar.map((e) => `- ${e}`).join('\\n')}`;\n }\n }\n\n errorMessage += `\\n\\nšŸ’” **Tips for using examples:**\n- Check workos_docs first to understand the concept\n- Use example group names that match features (e.g., \"sso\", \"directory-sync\")\n- Examples show practical implementations with best practices`;\n\n throw new Error(errorMessage);\n }\n }\n }\n\n case 'workos_changelogs': {\n const packageName = args?.package as string;\n if (!packageName) {\n throw new Error('Package parameter is required for workos_changelogs');\n }\n\n if (tools.changelogs.changelogsPath.startsWith('http')) {\n return {\n content: [\n {\n type: 'text',\n text: `Changelog for ${packageName} would be fetched from ${tools.changelogs.changelogsPath}`,\n },\n ],\n };\n } else {\n const changelogPath = path.join(tools.changelogs.changelogsPath, `${packageName}.json`);\n\n try {\n const content = await fs.readFile(changelogPath, 'utf-8');\n const changelog = JSON.parse(content);\n\n let result = `# ${packageName} Changelog\\n\\n`;\n\n for (const entry of changelog) {\n if (entry.source === 'rss') {\n // RSS entries use the title as the version/feature name\n result += `## ${entry.version}\\n`;\n result += `**Date:** ${entry.date}\\n`;\n if (entry.url) {\n result += `**Link:** ${entry.url}\\n`;\n }\n result += '\\n';\n for (const change of entry.changes) {\n result += `${change}\\n`;\n }\n result += '\\n---\\n\\n';\n } else {\n // Traditional markdown changelog format\n result += `## [${entry.version}] - ${entry.date}\\n\\n`;\n for (const change of entry.changes) {\n result += `- ${change}\\n`;\n }\n result += '\\n';\n }\n }\n\n // Add list of other available changelogs\n const glob = await import('fast-glob');\n const allChangelogs = await glob.default(`${tools.changelogs.changelogsPath}/*.json`);\n const otherPackages = allChangelogs\n .map((p) => path.basename(p, '.json'))\n .filter((p) => p !== packageName)\n .sort();\n\n if (otherPackages.length > 0) {\n result += `\\n---\\n### Other Package Changelogs\\n`;\n result += otherPackages.map((p) => `- ${p}`).join('\\n');\n result += '\\n\\nšŸ’” **Tip:** Use these package names with workos_changelogs to see their version history.';\n }\n\n return {\n content: [\n {\n type: 'text',\n text: result,\n },\n ],\n };\n } catch {\n // Get available changelogs\n const glob = await import('fast-glob');\n const allChangelogs = await glob.default(`${tools.changelogs.changelogsPath}/*.json`);\n const availablePackages = allChangelogs.map((p) => path.basename(p, '.json')).sort();\n\n let errorMessage = `šŸ“‹ Changelog for package \"${packageName}\" not found.\\n\\n`;\n\n if (availablePackages.length > 0) {\n errorMessage += `**Available package changelogs:**\\n${availablePackages.map((p) => `- ${p}`).join('\\n')}`;\n\n // Find similar packages\n const similar = availablePackages.filter(\n (p) =>\n p.toLowerCase().includes(packageName.toLowerCase()) ||\n packageName.toLowerCase().includes(p.toLowerCase()),\n );\n\n if (similar.length > 0 && similar.length < availablePackages.length) {\n errorMessage += `\\n\\n**Did you mean:**\\n${similar.map((p) => `- ${p}`).join('\\n')}`;\n }\n }\n\n errorMessage += `\\n\\nšŸ’” **Choose the right changelog:**\n- **workos-platform** - For product announcements, new features, service updates, or \"what's new\" questions\n- **@workos/node** - For Node.js SDK version history, migration guides, and troubleshooting\n- **@workos/python** - For Python SDK version history and compatibility\n- **@workos/ruby** - For Ruby SDK version history and compatibility\n- **@workos/go** - For Go SDK version history and compatibility\n- **@workos/php** - For PHP SDK version history and compatibility\n- **@workos/kotlin** - For Kotlin SDK version history and compatibility\n\nšŸ¤– **AI Assistant tip**: If the user asks about \"what's new\", \"recent updates\", or \"new features\", use workos-platform. If they mention a specific SDK, version number, or technical issue, use the relevant SDK package.`;\n\n throw new Error(errorMessage);\n }\n }\n }\n\n default:\n throw new Error(`Unknown tool: ${name}`);\n }\n } catch (error) {\n return {\n content: [\n {\n type: 'text',\n text: `Error: ${error instanceof Error ? error.message : String(error)}`,\n },\n ],\n isError: true,\n };\n }\n});\n\nasync function main() {\n const transport = new StdioServerTransport();\n await server.connect(transport);\n console.error('WorkOS MCP Documentation Server running on stdio');\n}\n\n// Export getTools for programmatic usage\nexport { getTools } from './get-tools.js';\n\nmain().catch((error) => {\n console.error('Fatal error in main():', error);\n process.exit(1);\n});\n"],"mappings":"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","names":["glob"]}
@@ -0,0 +1,2 @@
1
+
2
+ export { }