fastmcp 2.8.1__tar.gz → 2.9.0__tar.gz

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 (343) hide show
  1. {fastmcp-2.8.1 → fastmcp-2.9.0}/.github/release.yml +11 -2
  2. {fastmcp-2.8.1 → fastmcp-2.9.0}/.pre-commit-config.yaml +1 -1
  3. fastmcp-2.9.0/CLAUDE.md +36 -0
  4. {fastmcp-2.8.1 → fastmcp-2.9.0}/PKG-INFO +2 -2
  5. {fastmcp-2.8.1 → fastmcp-2.9.0}/README.md +1 -1
  6. fastmcp-2.9.0/docs/.cursor/rules/mintlify.mdc +364 -0
  7. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/changelog.mdx +1 -1
  8. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/clients/auth/bearer.mdx +1 -1
  9. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/clients/auth/oauth.mdx +1 -1
  10. fastmcp-2.9.0/docs/clients/client.mdx +291 -0
  11. fastmcp-2.9.0/docs/clients/logging.mdx +76 -0
  12. fastmcp-2.9.0/docs/clients/progress.mdx +70 -0
  13. fastmcp-2.9.0/docs/clients/prompts.mdx +187 -0
  14. fastmcp-2.9.0/docs/clients/resources.mdx +171 -0
  15. fastmcp-2.9.0/docs/clients/roots.mdx +42 -0
  16. fastmcp-2.9.0/docs/clients/sampling.mdx +152 -0
  17. fastmcp-2.9.0/docs/clients/tools.mdx +143 -0
  18. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/clients/transports.mdx +4 -4
  19. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/deployment/asgi.mdx +11 -5
  20. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/deployment/running-server.mdx +11 -8
  21. fastmcp-2.9.0/docs/docs.json +312 -0
  22. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/getting-started/installation.mdx +3 -2
  23. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/integrations/anthropic.mdx +6 -6
  24. fastmcp-2.9.0/docs/integrations/chatgpt.mdx +158 -0
  25. fastmcp-2.9.0/docs/integrations/claude-code.mdx +60 -0
  26. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/integrations/claude-desktop.mdx +9 -5
  27. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/integrations/gemini.mdx +2 -2
  28. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/integrations/openai.mdx +6 -6
  29. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/patterns/cli.mdx +33 -8
  30. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/patterns/tool-transformation.mdx +1 -0
  31. fastmcp-2.9.0/docs/python-sdk/fastmcp-cli-__init__.mdx +9 -0
  32. fastmcp-2.9.0/docs/python-sdk/fastmcp-cli-claude.mdx +43 -0
  33. fastmcp-2.9.0/docs/python-sdk/fastmcp-cli-cli.mdx +86 -0
  34. fastmcp-2.9.0/docs/python-sdk/fastmcp-cli-run.mdx +106 -0
  35. fastmcp-2.9.0/docs/python-sdk/fastmcp-client-__init__.mdx +8 -0
  36. fastmcp-2.9.0/docs/python-sdk/fastmcp-client-auth-__init__.mdx +8 -0
  37. fastmcp-2.9.0/docs/python-sdk/fastmcp-client-auth-bearer.mdx +18 -0
  38. fastmcp-2.9.0/docs/python-sdk/fastmcp-client-auth-oauth.mdx +102 -0
  39. fastmcp-2.9.0/docs/python-sdk/fastmcp-client-client.mdx +94 -0
  40. fastmcp-2.9.0/docs/python-sdk/fastmcp-client-logging.mdx +14 -0
  41. fastmcp-2.9.0/docs/python-sdk/fastmcp-client-oauth_callback.mdx +63 -0
  42. fastmcp-2.9.0/docs/python-sdk/fastmcp-client-progress.mdx +8 -0
  43. fastmcp-2.9.0/docs/python-sdk/fastmcp-client-roots.mdx +20 -0
  44. fastmcp-2.9.0/docs/python-sdk/fastmcp-client-sampling.mdx +14 -0
  45. fastmcp-2.9.0/docs/python-sdk/fastmcp-client-transports.mdx +191 -0
  46. fastmcp-2.9.0/docs/python-sdk/fastmcp-exceptions.mdx +65 -0
  47. fastmcp-2.9.0/docs/python-sdk/fastmcp-prompts-__init__.mdx +8 -0
  48. fastmcp-2.9.0/docs/python-sdk/fastmcp-prompts-prompt.mdx +84 -0
  49. fastmcp-2.9.0/docs/python-sdk/fastmcp-prompts-prompt_manager.mdx +43 -0
  50. fastmcp-2.9.0/docs/python-sdk/fastmcp-resources-__init__.mdx +8 -0
  51. fastmcp-2.9.0/docs/python-sdk/fastmcp-resources-resource.mdx +90 -0
  52. fastmcp-2.9.0/docs/python-sdk/fastmcp-resources-resource_manager.mdx +111 -0
  53. fastmcp-2.9.0/docs/python-sdk/fastmcp-resources-template.mdx +104 -0
  54. fastmcp-2.9.0/docs/python-sdk/fastmcp-resources-types.mdx +83 -0
  55. fastmcp-2.9.0/docs/python-sdk/fastmcp-server-__init__.mdx +8 -0
  56. fastmcp-2.9.0/docs/python-sdk/fastmcp-server-auth-__init__.mdx +8 -0
  57. fastmcp-2.9.0/docs/python-sdk/fastmcp-server-auth-auth.mdx +10 -0
  58. fastmcp-2.9.0/docs/python-sdk/fastmcp-server-auth-providers-__init__.mdx +8 -0
  59. fastmcp-2.9.0/docs/python-sdk/fastmcp-server-auth-providers-bearer.mdx +69 -0
  60. fastmcp-2.9.0/docs/python-sdk/fastmcp-server-auth-providers-bearer_env.mdx +22 -0
  61. fastmcp-2.9.0/docs/python-sdk/fastmcp-server-auth-providers-in_memory.mdx +15 -0
  62. fastmcp-2.9.0/docs/python-sdk/fastmcp-server-context.mdx +118 -0
  63. fastmcp-2.9.0/docs/python-sdk/fastmcp-server-dependencies.mdx +36 -0
  64. fastmcp-2.9.0/docs/python-sdk/fastmcp-server-http.mdx +113 -0
  65. fastmcp-2.9.0/docs/python-sdk/fastmcp-server-middleware.mdx +56 -0
  66. fastmcp-2.9.0/docs/python-sdk/fastmcp-server-openapi.mdx +58 -0
  67. fastmcp-2.9.0/docs/python-sdk/fastmcp-server-proxy.mdx +101 -0
  68. fastmcp-2.9.0/docs/python-sdk/fastmcp-server-server.mdx +542 -0
  69. fastmcp-2.9.0/docs/python-sdk/fastmcp-settings.mdx +59 -0
  70. fastmcp-2.9.0/docs/python-sdk/fastmcp-tools-__init__.mdx +8 -0
  71. fastmcp-2.9.0/docs/python-sdk/fastmcp-tools-tool.mdx +68 -0
  72. fastmcp-2.9.0/docs/python-sdk/fastmcp-tools-tool_manager.mdx +58 -0
  73. fastmcp-2.9.0/docs/python-sdk/fastmcp-tools-tool_transform.mdx +117 -0
  74. fastmcp-2.9.0/docs/python-sdk/fastmcp-utilities-__init__.mdx +9 -0
  75. fastmcp-2.9.0/docs/python-sdk/fastmcp-utilities-cache.mdx +30 -0
  76. fastmcp-2.9.0/docs/python-sdk/fastmcp-utilities-components.mdx +52 -0
  77. fastmcp-2.9.0/docs/python-sdk/fastmcp-utilities-exceptions.mdx +20 -0
  78. fastmcp-2.9.0/docs/python-sdk/fastmcp-utilities-http.mdx +18 -0
  79. fastmcp-2.9.0/docs/python-sdk/fastmcp-utilities-inspect.mdx +41 -0
  80. fastmcp-2.9.0/docs/python-sdk/fastmcp-utilities-json_schema.mdx +25 -0
  81. fastmcp-2.9.0/docs/python-sdk/fastmcp-utilities-logging.mdx +41 -0
  82. fastmcp-2.9.0/docs/python-sdk/fastmcp-utilities-mcp_config.mdx +50 -0
  83. fastmcp-2.9.0/docs/python-sdk/fastmcp-utilities-openapi.mdx +118 -0
  84. fastmcp-2.9.0/docs/python-sdk/fastmcp-utilities-tests.mdx +42 -0
  85. fastmcp-2.9.0/docs/python-sdk/fastmcp-utilities-types.mdx +112 -0
  86. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/servers/auth/bearer.mdx +69 -24
  87. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/servers/composition.mdx +81 -9
  88. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/servers/context.mdx +1 -0
  89. fastmcp-2.9.0/docs/servers/middleware.mdx +574 -0
  90. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/servers/prompts.mdx +113 -49
  91. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/servers/proxy.mdx +3 -3
  92. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/servers/resources.mdx +37 -18
  93. fastmcp-2.8.1/docs/servers/fastmcp.mdx → fastmcp-2.9.0/docs/servers/server.mdx +59 -13
  94. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/servers/tools.mdx +62 -24
  95. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/tutorials/rest-api.mdx +3 -3
  96. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/updates.mdx +2 -2
  97. fastmcp-2.9.0/examples/atproto_mcp/README.md +146 -0
  98. fastmcp-2.9.0/examples/atproto_mcp/demo.py +225 -0
  99. fastmcp-2.9.0/examples/atproto_mcp/pyproject.toml +24 -0
  100. fastmcp-2.9.0/examples/atproto_mcp/src/atproto_mcp/__init__.py +3 -0
  101. fastmcp-2.9.0/examples/atproto_mcp/src/atproto_mcp/__main__.py +9 -0
  102. fastmcp-2.9.0/examples/atproto_mcp/src/atproto_mcp/_atproto/__init__.py +19 -0
  103. fastmcp-2.9.0/examples/atproto_mcp/src/atproto_mcp/_atproto/_client.py +16 -0
  104. fastmcp-2.9.0/examples/atproto_mcp/src/atproto_mcp/_atproto/_posts.py +284 -0
  105. fastmcp-2.9.0/examples/atproto_mcp/src/atproto_mcp/_atproto/_profile.py +33 -0
  106. fastmcp-2.9.0/examples/atproto_mcp/src/atproto_mcp/_atproto/_read.py +124 -0
  107. fastmcp-2.9.0/examples/atproto_mcp/src/atproto_mcp/_atproto/_social.py +108 -0
  108. fastmcp-2.9.0/examples/atproto_mcp/src/atproto_mcp/server.py +128 -0
  109. fastmcp-2.9.0/examples/atproto_mcp/src/atproto_mcp/settings.py +17 -0
  110. fastmcp-2.9.0/examples/atproto_mcp/src/atproto_mcp/types.py +121 -0
  111. fastmcp-2.9.0/examples/get_file.py +33 -0
  112. fastmcp-2.9.0/justfile +30 -0
  113. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/cli/cli.py +99 -1
  114. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/cli/run.py +1 -3
  115. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/client/auth/oauth.py +1 -2
  116. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/client/client.py +21 -5
  117. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/client/transports.py +17 -2
  118. fastmcp-2.9.0/src/fastmcp/contrib/mcp_mixin/README.md +116 -0
  119. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/contrib/mcp_mixin/mcp_mixin.py +14 -0
  120. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/prompts/prompt.py +91 -11
  121. fastmcp-2.9.0/src/fastmcp/prompts/prompt_manager.py +201 -0
  122. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/resources/resource.py +11 -1
  123. fastmcp-2.9.0/src/fastmcp/resources/resource_manager.py +492 -0
  124. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/resources/template.py +27 -1
  125. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/server/auth/providers/bearer.py +32 -10
  126. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/server/context.py +41 -2
  127. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/server/http.py +8 -0
  128. fastmcp-2.9.0/src/fastmcp/server/middleware/__init__.py +6 -0
  129. fastmcp-2.9.0/src/fastmcp/server/middleware/error_handling.py +206 -0
  130. fastmcp-2.9.0/src/fastmcp/server/middleware/logging.py +165 -0
  131. fastmcp-2.9.0/src/fastmcp/server/middleware/middleware.py +236 -0
  132. fastmcp-2.9.0/src/fastmcp/server/middleware/rate_limiting.py +231 -0
  133. fastmcp-2.9.0/src/fastmcp/server/middleware/timing.py +156 -0
  134. fastmcp-2.9.0/src/fastmcp/server/proxy.py +401 -0
  135. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/server/server.py +320 -242
  136. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/settings.py +2 -2
  137. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/tools/tool.py +6 -2
  138. fastmcp-2.9.0/src/fastmcp/tools/tool_manager.py +215 -0
  139. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/utilities/components.py +22 -2
  140. fastmcp-2.9.0/src/fastmcp/utilities/inspect.py +326 -0
  141. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/utilities/json_schema.py +67 -23
  142. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/utilities/mcp_config.py +13 -7
  143. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/utilities/openapi.py +5 -3
  144. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/utilities/tests.py +1 -1
  145. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/utilities/types.py +90 -1
  146. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/auth/providers/test_bearer.py +98 -6
  147. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/auth/test_oauth_client.py +2 -2
  148. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/cli/test_cli.py +35 -0
  149. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/client/test_client.py +133 -6
  150. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/client/test_openapi.py +5 -5
  151. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/client/test_sse.py +3 -3
  152. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/client/test_streamable_http.py +64 -7
  153. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/deprecated/test_deprecated.py +1 -81
  154. fastmcp-2.9.0/tests/deprecated/test_mount_import_arg_order.py +275 -0
  155. fastmcp-2.9.0/tests/deprecated/test_mount_separators.py +113 -0
  156. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/deprecated/test_resource_prefixes.py +7 -5
  157. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/deprecated/test_settings.py +2 -2
  158. fastmcp-2.9.0/tests/prompts/test_prompt.py +484 -0
  159. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/prompts/test_prompt_manager.py +23 -24
  160. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/resources/test_resource_manager.py +73 -53
  161. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/resources/test_resource_template.py +1 -0
  162. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/server/http/test_custom_routes.py +1 -1
  163. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/server/http/test_http_dependencies.py +3 -3
  164. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/server/http/test_http_middleware.py +2 -2
  165. fastmcp-2.9.0/tests/server/middleware/test_error_handling.py +601 -0
  166. fastmcp-2.9.0/tests/server/middleware/test_logging.py +426 -0
  167. fastmcp-2.9.0/tests/server/middleware/test_middleware.py +567 -0
  168. fastmcp-2.9.0/tests/server/middleware/test_rate_limiting.py +448 -0
  169. fastmcp-2.9.0/tests/server/middleware/test_timing.py +312 -0
  170. fastmcp-2.9.0/tests/server/openapi/__init__.py +0 -0
  171. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/server/openapi/test_openapi.py +188 -184
  172. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/server/test_app_state.py +2 -2
  173. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/server/test_context.py +37 -0
  174. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/server/test_import_server.py +237 -38
  175. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/server/test_mount.py +386 -67
  176. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/server/test_proxy.py +2 -2
  177. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/server/test_resource_prefix_formats.py +6 -6
  178. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/server/test_server.py +15 -9
  179. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/server/test_server_interactions.py +167 -6
  180. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/server/test_tool_annotations.py +6 -3
  181. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/server/test_tool_exclude_args.py +5 -3
  182. fastmcp-2.9.0/tests/tools/__init__.py +0 -0
  183. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/tools/test_tool.py +81 -1
  184. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/tools/test_tool_manager.py +46 -41
  185. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/utilities/openapi/test_openapi_advanced.py +22 -0
  186. fastmcp-2.9.0/tests/utilities/test_inspect.py +388 -0
  187. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/utilities/test_json_schema.py +17 -5
  188. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/utilities/test_mcp_config.py +6 -6
  189. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/utilities/test_types.py +114 -0
  190. fastmcp-2.8.1/docs/clients/advanced-features.mdx +0 -152
  191. fastmcp-2.8.1/docs/clients/client.mdx +0 -372
  192. fastmcp-2.8.1/docs/docs.json +0 -177
  193. fastmcp-2.8.1/justfile +0 -12
  194. fastmcp-2.8.1/src/fastmcp/contrib/mcp_mixin/README.md +0 -39
  195. fastmcp-2.8.1/src/fastmcp/prompts/prompt_manager.py +0 -125
  196. fastmcp-2.8.1/src/fastmcp/resources/resource_manager.py +0 -319
  197. fastmcp-2.8.1/src/fastmcp/server/proxy.py +0 -291
  198. fastmcp-2.8.1/src/fastmcp/tools/tool_manager.py +0 -146
  199. fastmcp-2.8.1/tests/deprecated/test_mount_separators.py +0 -88
  200. fastmcp-2.8.1/tests/prompts/test_prompt.py +0 -242
  201. {fastmcp-2.8.1 → fastmcp-2.9.0}/.cursor/rules/core-mcp-objects.mdc +0 -0
  202. {fastmcp-2.8.1 → fastmcp-2.9.0}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
  203. {fastmcp-2.8.1 → fastmcp-2.9.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  204. {fastmcp-2.8.1 → fastmcp-2.9.0}/.github/ISSUE_TEMPLATE/enhancement.yml +0 -0
  205. {fastmcp-2.8.1 → fastmcp-2.9.0}/.github/dependabot.yml +0 -0
  206. {fastmcp-2.8.1 → fastmcp-2.9.0}/.github/labeler.yml +0 -0
  207. {fastmcp-2.8.1 → fastmcp-2.9.0}/.github/workflows/labeler.yml +0 -0
  208. {fastmcp-2.8.1 → fastmcp-2.9.0}/.github/workflows/publish.yml +0 -0
  209. {fastmcp-2.8.1 → fastmcp-2.9.0}/.github/workflows/run-static.yml +0 -0
  210. {fastmcp-2.8.1 → fastmcp-2.9.0}/.github/workflows/run-tests.yml +0 -0
  211. {fastmcp-2.8.1 → fastmcp-2.9.0}/.gitignore +0 -0
  212. {fastmcp-2.8.1 → fastmcp-2.9.0}/AGENTS.md +0 -0
  213. {fastmcp-2.8.1 → fastmcp-2.9.0}/LICENSE +0 -0
  214. {fastmcp-2.8.1 → fastmcp-2.9.0}/Windows_Notes.md +0 -0
  215. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/assets/demo-inspector.png +0 -0
  216. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/assets/favicon.ico +0 -0
  217. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/assets/images/tutorial-rest-api-result.png +0 -0
  218. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/assets/logo.png +0 -0
  219. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/assets/updates/release-2-7.png +0 -0
  220. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/community/README.md +0 -0
  221. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/community/showcase.mdx +0 -0
  222. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/getting-started/quickstart.mdx +0 -0
  223. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/getting-started/welcome.mdx +0 -0
  224. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/integrations/contrib.mdx +0 -0
  225. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/patterns/decorating-methods.mdx +0 -0
  226. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/patterns/http-requests.mdx +0 -0
  227. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/patterns/testing.mdx +0 -0
  228. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/servers/openapi.mdx +0 -0
  229. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/snippets/version-badge.mdx +0 -0
  230. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/snippets/youtube-embed.mdx +0 -0
  231. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/style.css +0 -0
  232. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/tutorials/create-mcp-server.mdx +0 -0
  233. {fastmcp-2.8.1 → fastmcp-2.9.0}/docs/tutorials/mcp.mdx +0 -0
  234. {fastmcp-2.8.1/examples/smart_home/src/smart_home → fastmcp-2.9.0/examples/atproto_mcp/src/atproto_mcp}/py.typed +0 -0
  235. {fastmcp-2.8.1 → fastmcp-2.9.0}/examples/complex_inputs.py +0 -0
  236. {fastmcp-2.8.1 → fastmcp-2.9.0}/examples/config_server.py +0 -0
  237. {fastmcp-2.8.1 → fastmcp-2.9.0}/examples/desktop.py +0 -0
  238. {fastmcp-2.8.1 → fastmcp-2.9.0}/examples/echo.py +0 -0
  239. {fastmcp-2.8.1 → fastmcp-2.9.0}/examples/in_memory_proxy_example.py +0 -0
  240. {fastmcp-2.8.1 → fastmcp-2.9.0}/examples/memory.py +0 -0
  241. {fastmcp-2.8.1 → fastmcp-2.9.0}/examples/mount_example.py +0 -0
  242. {fastmcp-2.8.1 → fastmcp-2.9.0}/examples/sampling.py +0 -0
  243. {fastmcp-2.8.1 → fastmcp-2.9.0}/examples/screenshot.py +0 -0
  244. {fastmcp-2.8.1 → fastmcp-2.9.0}/examples/serializer.py +0 -0
  245. {fastmcp-2.8.1 → fastmcp-2.9.0}/examples/simple_echo.py +0 -0
  246. {fastmcp-2.8.1 → fastmcp-2.9.0}/examples/smart_home/README.md +0 -0
  247. {fastmcp-2.8.1 → fastmcp-2.9.0}/examples/smart_home/pyproject.toml +0 -0
  248. {fastmcp-2.8.1 → fastmcp-2.9.0}/examples/smart_home/src/smart_home/__init__.py +0 -0
  249. {fastmcp-2.8.1 → fastmcp-2.9.0}/examples/smart_home/src/smart_home/__main__.py +0 -0
  250. {fastmcp-2.8.1 → fastmcp-2.9.0}/examples/smart_home/src/smart_home/hub.py +0 -0
  251. {fastmcp-2.8.1 → fastmcp-2.9.0}/examples/smart_home/src/smart_home/lights/__init__.py +0 -0
  252. {fastmcp-2.8.1 → fastmcp-2.9.0}/examples/smart_home/src/smart_home/lights/hue_utils.py +0 -0
  253. {fastmcp-2.8.1 → fastmcp-2.9.0}/examples/smart_home/src/smart_home/lights/server.py +0 -0
  254. {fastmcp-2.8.1/src/fastmcp → fastmcp-2.9.0/examples/smart_home/src/smart_home}/py.typed +0 -0
  255. {fastmcp-2.8.1 → fastmcp-2.9.0}/examples/smart_home/src/smart_home/settings.py +0 -0
  256. {fastmcp-2.8.1 → fastmcp-2.9.0}/examples/smart_home/uv.lock +0 -0
  257. {fastmcp-2.8.1 → fastmcp-2.9.0}/examples/tags_example.py +0 -0
  258. {fastmcp-2.8.1 → fastmcp-2.9.0}/examples/text_me.py +0 -0
  259. {fastmcp-2.8.1 → fastmcp-2.9.0}/pyproject.toml +0 -0
  260. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/__init__.py +0 -0
  261. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/cli/__init__.py +0 -0
  262. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/cli/claude.py +0 -0
  263. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/client/__init__.py +0 -0
  264. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/client/auth/__init__.py +0 -0
  265. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/client/auth/bearer.py +0 -0
  266. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/client/logging.py +0 -0
  267. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/client/oauth_callback.py +0 -0
  268. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/client/progress.py +0 -0
  269. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/client/roots.py +0 -0
  270. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/client/sampling.py +0 -0
  271. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/contrib/README.md +0 -0
  272. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
  273. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
  274. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
  275. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
  276. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
  277. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/contrib/mcp_mixin/example.py +0 -0
  278. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/exceptions.py +0 -0
  279. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/prompts/__init__.py +0 -0
  280. /fastmcp-2.8.1/src/fastmcp/server/auth/providers/__init__.py → /fastmcp-2.9.0/src/fastmcp/py.typed +0 -0
  281. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/resources/__init__.py +0 -0
  282. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/resources/types.py +0 -0
  283. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/server/__init__.py +0 -0
  284. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/server/auth/__init__.py +0 -0
  285. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/server/auth/auth.py +0 -0
  286. {fastmcp-2.8.1/tests → fastmcp-2.9.0/src/fastmcp/server/auth/providers}/__init__.py +0 -0
  287. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/server/auth/providers/bearer_env.py +0 -0
  288. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/server/auth/providers/in_memory.py +0 -0
  289. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/server/dependencies.py +0 -0
  290. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/server/openapi.py +0 -0
  291. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/tools/__init__.py +0 -0
  292. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/tools/tool_transform.py +0 -0
  293. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/utilities/__init__.py +0 -0
  294. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/utilities/cache.py +0 -0
  295. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/utilities/exceptions.py +0 -0
  296. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/utilities/http.py +0 -0
  297. {fastmcp-2.8.1 → fastmcp-2.9.0}/src/fastmcp/utilities/logging.py +0 -0
  298. {fastmcp-2.8.1/tests/auth → fastmcp-2.9.0/tests}/__init__.py +0 -0
  299. {fastmcp-2.8.1/tests/cli → fastmcp-2.9.0/tests/auth}/__init__.py +0 -0
  300. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/auth/providers/test_bearer_env.py +0 -0
  301. {fastmcp-2.8.1/tests/client → fastmcp-2.9.0/tests/cli}/__init__.py +0 -0
  302. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/cli/test_run.py +0 -0
  303. {fastmcp-2.8.1/tests/prompts → fastmcp-2.9.0/tests/client}/__init__.py +0 -0
  304. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/client/test_logs.py +0 -0
  305. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/client/test_progress.py +0 -0
  306. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/client/test_roots.py +0 -0
  307. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/client/test_sampling.py +0 -0
  308. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/client/test_stdio.py +0 -0
  309. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/conftest.py +0 -0
  310. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/contrib/__init__.py +0 -0
  311. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/contrib/test_bulk_tool_caller.py +0 -0
  312. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/contrib/test_mcp_mixin.py +0 -0
  313. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/deprecated/__init__.py +0 -0
  314. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/deprecated/test_route_type_ignore.py +0 -0
  315. {fastmcp-2.8.1/tests/resources → fastmcp-2.9.0/tests/prompts}/__init__.py +0 -0
  316. {fastmcp-2.8.1/tests/server → fastmcp-2.9.0/tests/resources}/__init__.py +0 -0
  317. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/resources/test_file_resources.py +0 -0
  318. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/resources/test_function_resources.py +0 -0
  319. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/resources/test_resources.py +0 -0
  320. {fastmcp-2.8.1/tests/server/http → fastmcp-2.9.0/tests/server}/__init__.py +0 -0
  321. {fastmcp-2.8.1/tests/server/openapi → fastmcp-2.9.0/tests/server/http}/__init__.py +0 -0
  322. {fastmcp-2.8.1/tests/tools → fastmcp-2.9.0/tests/server/middleware}/__init__.py +0 -0
  323. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/server/openapi/test_openapi_path_parameters.py +0 -0
  324. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/server/openapi/test_route_map_fn.py +0 -0
  325. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/server/test_auth_integration.py +0 -0
  326. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/server/test_file_server.py +0 -0
  327. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/server/test_logging.py +0 -0
  328. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/server/test_run_server.py +0 -0
  329. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/test_examples.py +0 -0
  330. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/test_servers/fastmcp_server.py +0 -0
  331. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/test_servers/sse.py +0 -0
  332. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/test_servers/stdio.py +0 -0
  333. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/tools/test_tool_transform.py +0 -0
  334. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/utilities/__init__.py +0 -0
  335. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/utilities/openapi/__init__.py +0 -0
  336. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/utilities/openapi/conftest.py +0 -0
  337. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/utilities/openapi/test_openapi.py +0 -0
  338. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/utilities/openapi/test_openapi_fastapi.py +0 -0
  339. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/utilities/test_cache.py +0 -0
  340. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/utilities/test_logging.py +0 -0
  341. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/utilities/test_tests.py +0 -0
  342. {fastmcp-2.8.1 → fastmcp-2.9.0}/tests/utilities/test_typeadapter.py +0 -0
  343. {fastmcp-2.8.1 → fastmcp-2.9.0}/uv.lock +0 -0
@@ -9,7 +9,7 @@ changelog:
9
9
  - feature
10
10
  exclude:
11
11
  labels:
12
- - breaking change
12
+ - contrib
13
13
 
14
14
  - title: Enhancements 🔧
15
15
  labels:
@@ -17,22 +17,31 @@ changelog:
17
17
  exclude:
18
18
  labels:
19
19
  - breaking change
20
+ - contrib
20
21
 
21
22
  - title: Fixes 🐞
22
23
  labels:
23
24
  - bug
24
25
  exclude:
25
26
  labels:
26
- - breaking change
27
+ - contrib
27
28
 
28
29
  - title: Breaking Changes 🛫
29
30
  labels:
30
31
  - breaking change
32
+ exclude:
33
+ labels:
34
+ - contrib
31
35
 
32
36
  - title: Docs 📚
33
37
  labels:
34
38
  - documentation
35
39
 
40
+ - title: Examples & Contrib 💡
41
+ labels:
42
+ - example
43
+ - contrib
44
+
36
45
  - title: Dependencies 📦
37
46
  labels:
38
47
  - dependencies
@@ -1,4 +1,4 @@
1
- fail_fast: true
1
+ fail_fast: false
2
2
 
3
3
  repos:
4
4
  - repo: https://github.com/abravalheri/validate-pyproject
@@ -0,0 +1,36 @@
1
+ # FastMCP Development Guidelines
2
+
3
+ ## Testing and Investigation
4
+
5
+ ### In-Memory Transport - Always Preferred
6
+
7
+ When testing or investigating FastMCP servers, **always prefer the in-memory transport** unless you specifically need HTTP transport features. Pass a FastMCP server directly to a Client to eliminate separate processes and network complexity.
8
+
9
+ ```python
10
+ # Create your FastMCP server
11
+ mcp = FastMCP("TestServer")
12
+
13
+ @mcp.tool
14
+ def greet(name: str) -> str:
15
+ return f"Hello, {name}!"
16
+
17
+ # Pass server directly to client - uses in-memory transport
18
+ async with Client(mcp) as client:
19
+ result = await client.call_tool("greet", {"name": "World"})
20
+ ```
21
+
22
+ ### When to Use HTTP Transport
23
+
24
+ Only use HTTP transport when testing network-specific features. Prefer StreamableHttp over SSE as it's the modern approach.
25
+
26
+ ```python
27
+ # Only when network testing is required
28
+ async with Client(transport=StreamableHttpTransport(server_url)) as client:
29
+ result = await client.ping()
30
+ ```
31
+
32
+ ## Development Workflow
33
+
34
+ - You must always run pre-commit if you open a PR, because it is run as part of a required check.
35
+ - When opening PRs, apply labels appropriately for bugs/breaking changes/enhancements/features. Generally, improvements are enhancements (not features) unless told otherwise.
36
+ - NEVER modify files in docs/python-sdk/**, as they are auto-generated.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastmcp
3
- Version: 2.8.1
3
+ Version: 2.9.0
4
4
  Summary: The fast, Pythonic way to build MCP servers.
5
5
  Project-URL: Homepage, https://gofastmcp.com
6
6
  Project-URL: Repository, https://github.com/jlowin/fastmcp
@@ -380,7 +380,7 @@ mcp.run(transport="stdio") # Default, so transport argument is optional
380
380
  **Streamable HTTP**: Recommended for web deployments.
381
381
 
382
382
  ```python
383
- mcp.run(transport="streamable-http", host="127.0.0.1", port=8000, path="/mcp")
383
+ mcp.run(transport="http", host="127.0.0.1", port=8000, path="/mcp")
384
384
  ```
385
385
 
386
386
  **SSE**: For compatibility with existing SSE clients.
@@ -349,7 +349,7 @@ mcp.run(transport="stdio") # Default, so transport argument is optional
349
349
  **Streamable HTTP**: Recommended for web deployments.
350
350
 
351
351
  ```python
352
- mcp.run(transport="streamable-http", host="127.0.0.1", port=8000, path="/mcp")
352
+ mcp.run(transport="http", host="127.0.0.1", port=8000, path="/mcp")
353
353
  ```
354
354
 
355
355
  **SSE**: For compatibility with existing SSE clients.
@@ -0,0 +1,364 @@
1
+ ---
2
+ description:
3
+ globs: *.mdx
4
+ alwaysApply: false
5
+ ---
6
+ # Mintlify technical writing assistant
7
+
8
+ You are an AI writing assistant specialized in creating exceptional technical documentation using Mintlify components and following industry-leading technical writing practices.
9
+
10
+ ## Core writing principles
11
+
12
+ ### Language and style requirements
13
+ - Use clear, direct language appropriate for technical audiences
14
+ - Write in second person ("you") for instructions and procedures
15
+ - Use active voice over passive voice
16
+ - Employ present tense for current states, future tense for outcomes
17
+ - Maintain consistent terminology throughout all documentation
18
+ - Keep sentences concise while providing necessary context
19
+ - Use parallel structure in lists, headings, and procedures
20
+
21
+ ### Content organization standards
22
+ - Lead with the most important information (inverted pyramid structure)
23
+ - Use progressive disclosure: basic concepts before advanced ones
24
+ - Break complex procedures into numbered steps
25
+ - Include prerequisites and context before instructions
26
+ - Provide expected outcomes for each major step
27
+ - End sections with next steps or related information
28
+ - Use descriptive, keyword-rich headings for navigation and SEO
29
+
30
+ ### User-centered approach
31
+ - Focus on user goals and outcomes rather than system features
32
+ - Anticipate common questions and address them proactively
33
+ - Include troubleshooting for likely failure points
34
+ - Provide multiple pathways when appropriate (beginner vs advanced), but offer an opinionated path for people to follow to avoid overwhelming with options
35
+
36
+ ## Mintlify component reference
37
+
38
+ ### Callout components
39
+
40
+ #### Note - Additional helpful information
41
+
42
+ <Note>
43
+ Supplementary information that supports the main content without interrupting flow
44
+ </Note>
45
+
46
+ #### Tip - Best practices and pro tips
47
+
48
+ <Tip>
49
+ Expert advice, shortcuts, or best practices that enhance user success
50
+ </Tip>
51
+
52
+ #### Warning - Important cautions
53
+
54
+ <Warning>
55
+ Critical information about potential issues, breaking changes, or destructive actions
56
+ </Warning>
57
+
58
+ #### Info - Neutral contextual information
59
+
60
+ <Info>
61
+ Background information, context, or neutral announcements
62
+ </Info>
63
+
64
+ #### Check - Success confirmations
65
+
66
+ <Check>
67
+ Positive confirmations, successful completions, or achievement indicators
68
+ </Check>
69
+
70
+ ### Code components
71
+
72
+ #### Single code block
73
+
74
+ ```javascript config.js
75
+ const apiConfig = {
76
+ baseURL: 'https://api.example.com',
77
+ timeout: 5000,
78
+ headers: {
79
+ 'Authorization': `Bearer ${process.env.API_TOKEN}`
80
+ }
81
+ };
82
+ ```
83
+
84
+ #### Code group with multiple languages
85
+
86
+ <CodeGroup>
87
+ ```javascript Node.js
88
+ const response = await fetch('/api/endpoint', {
89
+ headers: { Authorization: `Bearer ${apiKey}` }
90
+ });
91
+ ```
92
+
93
+ ```python Python
94
+ import requests
95
+ response = requests.get('/api/endpoint',
96
+ headers={'Authorization': f'Bearer {api_key}'})
97
+ ```
98
+
99
+ ```curl cURL
100
+ curl -X GET '/api/endpoint' \
101
+ -H 'Authorization: Bearer YOUR_API_KEY'
102
+ ```
103
+ </CodeGroup>
104
+
105
+ #### Request/Response examples
106
+
107
+ <RequestExample>
108
+ ```bash cURL
109
+ curl -X POST 'https://api.example.com/users' \
110
+ -H 'Content-Type: application/json' \
111
+ -d '{"name": "John Doe", "email": "john@example.com"}'
112
+ ```
113
+ </RequestExample>
114
+
115
+ <ResponseExample>
116
+ ```json Success
117
+ {
118
+ "id": "user_123",
119
+ "name": "John Doe",
120
+ "email": "john@example.com",
121
+ "created_at": "2024-01-15T10:30:00Z"
122
+ }
123
+ ```
124
+ </ResponseExample>
125
+
126
+ ### Structural components
127
+
128
+ #### Steps for procedures
129
+
130
+ <Steps>
131
+ <Step title="Install dependencies">
132
+ Run `npm install` to install required packages.
133
+
134
+ <Check>
135
+ Verify installation by running `npm list`.
136
+ </Check>
137
+ </Step>
138
+
139
+ <Step title="Configure environment">
140
+ Create a `.env` file with your API credentials.
141
+
142
+ ```bash
143
+ API_KEY=your_api_key_here
144
+ ```
145
+
146
+ <Warning>
147
+ Never commit API keys to version control.
148
+ </Warning>
149
+ </Step>
150
+ </Steps>
151
+
152
+ #### Tabs for alternative content
153
+
154
+ <Tabs>
155
+ <Tab title="macOS">
156
+ ```bash
157
+ brew install node
158
+ npm install -g package-name
159
+ ```
160
+ </Tab>
161
+
162
+ <Tab title="Windows">
163
+ ```powershell
164
+ choco install nodejs
165
+ npm install -g package-name
166
+ ```
167
+ </Tab>
168
+
169
+ <Tab title="Linux">
170
+ ```bash
171
+ sudo apt install nodejs npm
172
+ npm install -g package-name
173
+ ```
174
+ </Tab>
175
+ </Tabs>
176
+
177
+ #### Accordions for collapsible content
178
+
179
+ <AccordionGroup>
180
+ <Accordion title="Troubleshooting connection issues">
181
+ - **Firewall blocking**: Ensure ports 80 and 443 are open
182
+ - **Proxy configuration**: Set HTTP_PROXY environment variable
183
+ - **DNS resolution**: Try using 8.8.8.8 as DNS server
184
+ </Accordion>
185
+
186
+ <Accordion title="Advanced configuration">
187
+ ```javascript
188
+ const config = {
189
+ performance: { cache: true, timeout: 30000 },
190
+ security: { encryption: 'AES-256' }
191
+ };
192
+ ```
193
+ </Accordion>
194
+ </AccordionGroup>
195
+
196
+ ### API documentation components
197
+
198
+ #### Parameter fields
199
+
200
+ <ParamField path="user_id" type="string" required>
201
+ Unique identifier for the user. Must be a valid UUID v4 format.
202
+ </ParamField>
203
+
204
+ <ParamField body="email" type="string" required>
205
+ User's email address. Must be valid and unique within the system.
206
+ </ParamField>
207
+
208
+ <ParamField query="limit" type="integer" default="10">
209
+ Maximum number of results to return. Range: 1-100.
210
+ </ParamField>
211
+
212
+ <ParamField header="Authorization" type="string" required>
213
+ Bearer token for API authentication. Format: `Bearer YOUR_API_KEY`
214
+ </ParamField>
215
+
216
+ #### Response fields
217
+
218
+ <ResponseField name="user_id" type="string" required>
219
+ Unique identifier assigned to the newly created user.
220
+ </ResponseField>
221
+
222
+ <ResponseField name="created_at" type="timestamp">
223
+ ISO 8601 formatted timestamp of when the user was created.
224
+ </ResponseField>
225
+
226
+ <ResponseField name="permissions" type="array">
227
+ List of permission strings assigned to this user.
228
+ </ResponseField>
229
+
230
+ #### Expandable nested fields
231
+
232
+ <ResponseField name="user" type="object">
233
+ Complete user object with all associated data.
234
+
235
+ <Expandable title="User properties">
236
+ <ResponseField name="profile" type="object">
237
+ User profile information including personal details.
238
+
239
+ <Expandable title="Profile details">
240
+ <ResponseField name="first_name" type="string">
241
+ User's first name as entered during registration.
242
+ </ResponseField>
243
+
244
+ <ResponseField name="avatar_url" type="string | null">
245
+ URL to user's profile picture. Returns null if no avatar is set.
246
+ </ResponseField>
247
+ </Expandable>
248
+ </ResponseField>
249
+ </Expandable>
250
+ </ResponseField>
251
+
252
+ ### Interactive components
253
+
254
+ #### Cards for navigation
255
+
256
+ <Card title="Getting started guide" icon="rocket" href="/quickstart">
257
+ Complete walkthrough from installation to your first API call in under 10 minutes.
258
+ </Card>
259
+
260
+ <CardGroup cols={2}>
261
+ <Card title="Authentication" icon="key" href="/auth">
262
+ Learn how to authenticate requests using API keys or JWT tokens.
263
+ </Card>
264
+
265
+ <Card title="Rate limiting" icon="clock" href="/rate-limits">
266
+ Understand rate limits and best practices for high-volume usage.
267
+ </Card>
268
+ </CardGroup>
269
+
270
+ ### Media and advanced components
271
+
272
+ #### Frames for images
273
+
274
+ Wrap all images in frames.
275
+
276
+ <Frame>
277
+ <img src="/images/dashboard.png" alt="Main dashboard showing analytics overview" />
278
+ </Frame>
279
+
280
+ <Frame caption="The analytics dashboard provides real-time insights">
281
+ <img src="/images/analytics.png" alt="Analytics dashboard with charts" />
282
+ </Frame>
283
+
284
+ #### Tooltips and updates
285
+
286
+ <Tooltip tip="Application Programming Interface - protocols for building software">
287
+ API
288
+ </Tooltip>
289
+
290
+ <Update label="Version 2.1.0" description="Released March 15, 2024">
291
+ ## New features
292
+ - Added bulk user import functionality
293
+ - Improved error messages with actionable suggestions
294
+
295
+ ## Bug fixes
296
+ - Fixed pagination issue with large datasets
297
+ - Resolved authentication timeout problems
298
+ </Update>
299
+
300
+ ## Required page structure
301
+
302
+ Every documentation page must begin with YAML frontmatter:
303
+
304
+ ```yaml
305
+ ---
306
+ title: "Clear, specific, keyword-rich title"
307
+ description: "Concise description explaining page purpose and value"
308
+ ---
309
+ ```
310
+
311
+ ## Content quality standards
312
+
313
+ ### Code examples requirements
314
+ - Always include complete, runnable examples that users can copy and execute
315
+ - Show proper error handling and edge case management
316
+ - Use realistic data instead of placeholder values
317
+ - Include expected outputs and results for verification
318
+ - Test all code examples thoroughly before publishing
319
+ - Specify language and include filename when relevant
320
+ - Add explanatory comments for complex logic
321
+
322
+ ### API documentation requirements
323
+ - Document all parameters including optional ones with clear descriptions
324
+ - Show both success and error response examples with realistic data
325
+ - Include rate limiting information with specific limits
326
+ - Provide authentication examples showing proper format
327
+ - Explain all HTTP status codes and error handling
328
+ - Cover complete request/response cycles
329
+
330
+ ### Accessibility requirements
331
+ - Include descriptive alt text for all images and diagrams
332
+ - Use specific, actionable link text instead of "click here"
333
+ - Ensure proper heading hierarchy starting with H2
334
+ - Provide keyboard navigation considerations
335
+ - Use sufficient color contrast in examples and visuals
336
+ - Structure content for easy scanning with headers and lists
337
+
338
+ ## AI assistant instructions
339
+
340
+ ### Component selection logic
341
+ - Use **Steps** for procedures, tutorials, setup guides, and sequential instructions
342
+ - Use **Tabs** for platform-specific content or alternative approaches
343
+ - Use **CodeGroup** when showing the same concept in multiple languages
344
+ - Use **Accordions** for supplementary information that might interrupt flow
345
+ - Use **Cards and CardGroup** for navigation, feature overviews, and related resources
346
+ - Use **RequestExample/ResponseExample** specifically for API endpoint documentation
347
+ - Use **ParamField** for API parameters, **ResponseField** for API responses
348
+ - Use **Expandable** for nested object properties or hierarchical information
349
+
350
+ ### Quality assurance checklist
351
+ - Verify all code examples are syntactically correct and executable
352
+ - Test all links to ensure they are functional and lead to relevant content
353
+ - Validate Mintlify component syntax with all required properties
354
+ - Confirm proper heading hierarchy with H2 for main sections, H3 for subsections
355
+ - Ensure content flows logically from basic concepts to advanced topics
356
+ - Check for consistency in terminology, formatting, and component usage
357
+
358
+ ### Error prevention strategies
359
+ - Always include realistic error handling in code examples
360
+ - Provide dedicated troubleshooting sections for complex procedures
361
+ - Explain prerequisites clearly before beginning instructions
362
+ - Include verification and testing steps with expected outcomes
363
+ - Add appropriate warnings for destructive or security-sensitive actions
364
+ - Validate all technical information through testing before publication
@@ -1,5 +1,5 @@
1
1
  ---
2
- mode: center
2
+ icon: "list-check"
3
3
  ---
4
4
 
5
5
  <Update label="v2.8.0" description="2024-06-10">
@@ -3,7 +3,7 @@ title: Bearer Token Authentication
3
3
  sidebarTitle: Bearer Auth
4
4
  description: Authenticate your FastMCP client with a Bearer token.
5
5
  icon: key
6
- tag: "New!"
6
+ tag: NEW
7
7
  ---
8
8
 
9
9
  import { VersionBadge } from "/snippets/version-badge.mdx"
@@ -3,7 +3,7 @@ title: OAuth Authentication
3
3
  sidebarTitle: OAuth
4
4
  description: Authenticate your FastMCP client via OAuth 2.1.
5
5
  icon: window
6
- tag: "New!"
6
+ tag: NEW
7
7
  ---
8
8
 
9
9
  import { VersionBadge } from "/snippets/version-badge.mdx"