{"id":1772,"name":"fastmcp","ecosystem":"pip","repository_url":"https://github.com/jlowin/fastmcp","issues_count":672,"created_at":"2025-06-06T15:01:50.505Z","updated_at":"2025-06-06T15:01:50.505Z","purl":"pkg:pypi/fastmcp","metadata":{"id":11096773,"name":"fastmcp","ecosystem":"pypi","description":"The fast, Pythonic way to build MCP servers.","homepage":"https://gofastmcp.com","licenses":"Apache Software License","normalized_licenses":["Apache-2.0"],"repository_url":"https://github.com/jlowin/fastmcp","keywords_array":["agent","fastmcp","llm","mcp","mcp client","mcp server","model context protocol"],"namespace":null,"versions_count":40,"first_release_published_at":"2024-11-30T02:11:15.000Z","latest_release_published_at":"2025-06-05T19:03:50.000Z","latest_release_number":"2.7.0","last_synced_at":"2025-06-06T07:02:31.611Z","created_at":"2024-11-30T02:30:51.093Z","updated_at":"2025-06-06T07:02:32.217Z","registry_url":"https://pypi.org/project/fastmcp/","install_command":"pip install fastmcp --index-url https://pypi.org/simple","documentation_url":"https://gofastmcp.com","metadata":{"funding":null,"documentation":"https://gofastmcp.com","classifiers":["Intended Audience :: Developers","License :: OSI Approved :: Apache Software License","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Topic :: Scientific/Engineering :: Artificial Intelligence","Typing :: Typed"],"normalized_name":"fastmcp"},"repo_metadata":{"id":265588754,"uuid":"896296825","full_name":"jlowin/fastmcp","owner":"jlowin","description":"🚀 The fast, Pythonic way to build MCP servers and clients","archived":false,"fork":false,"pushed_at":"2025-05-28T00:57:05.000Z","size":2734,"stargazers_count":11012,"open_issues_count":82,"forks_count":631,"subscribers_count":46,"default_branch":"main","last_synced_at":"2025-05-28T01:33:39.615Z","etag":null,"topics":["agent","fastmcp","llm","mcp","mcp-client","mcp-server","model-context-protocol"],"latest_commit_sha":null,"homepage":"https://gofastmcp.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jlowin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-11-30T01:47:40.000Z","updated_at":"2025-05-28T01:33:36.000Z","dependencies_parsed_at":"2024-11-30T03:17:49.088Z","dependency_job_id":"91d758be-1f23-4405-8ee6-e550c9dec0c7","html_url":"https://github.com/jlowin/fastmcp","commit_stats":null,"previous_names":["jlowin/fastmcp"],"tags_count":35,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jlowin","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":257649055,"owners_count":22579592,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"jlowin","name":"Jeremiah Lowin","uuid":"153965","kind":"user","description":"","email":"","website":"www.prefect.io","location":"Washington, DC","twitter":null,"company":"@PrefectHQ ","icon_url":"https://avatars.githubusercontent.com/u/153965?u=c9a0be7f0a7657a7438072341ad3c6e5c585441a\u0026v=4","repositories_count":3,"last_synced_at":"2023-03-30T08:58:57.613Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/jlowin","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-04T06:16:52.960Z","updated_at":"2023-03-30T08:58:57.723Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jlowin","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jlowin/repositories"},"tags":[{"name":"v2.4.0","sha":"f2325fdc237fa5ba90ce06c288590b27720c220a","kind":"commit","published_at":"2025-05-21T18:57:04.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v2.4.0","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v2.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.4.0/manifests"},{"name":"v2.3.5","sha":"c6e3c16b11b7603f78d76c1cef91c4abf23878c8","kind":"commit","published_at":"2025-05-20T14:50:41.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v2.3.5","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v2.3.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.3.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.3.5/manifests"},{"name":"v2.3.4","sha":"837d4c407d781e88fd5b72da6676e2a57db03ba4","kind":"commit","published_at":"2025-05-15T00:50:24.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v2.3.4","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v2.3.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.3.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.3.4/manifests"},{"name":"v2.3.3","sha":"bb2dfe80f28adf244b1b5b10c14c748b9dd67876","kind":"commit","published_at":"2025-05-10T20:12:48.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v2.3.3","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v2.3.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.3.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.3.3/manifests"},{"name":"v2.3.2","sha":"aa6dde48cf12faab466b18520209a5fc52a0e2fa","kind":"commit","published_at":"2025-05-10T16:18:20.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v2.3.2","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v2.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.3.2/manifests"},{"name":"v2.3.1","sha":"7c257a481f5831271244697a69a3be4ce52e6961","kind":"commit","published_at":"2025-05-09T22:08:23.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v2.3.1","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v2.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.3.1/manifests"},{"name":"v2.3.0","sha":"c482c990766edbd6620156f0ec9b52558f98595a","kind":"commit","published_at":"2025-05-08T20:27:16.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v2.3.0","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v2.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.3.0/manifests"},{"name":"v2.3.0-rc.2","sha":"0e758c3af3d08381b63a09fcf0a69f8da729b0ab","kind":"commit","published_at":"2025-05-08T02:51:19.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v2.3.0-rc.2","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v2.3.0-rc.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.3.0-rc.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.3.0-rc.2/manifests"},{"name":"v2.3.0-rc.1","sha":"61a1f334ae8b20628ab0fc925d175047605eb4c1","kind":"commit","published_at":"2025-05-08T02:30:49.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v2.3.0-rc.1","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v2.3.0-rc.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.3.0-rc.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.3.0-rc.1/manifests"},{"name":"v2.2.10","sha":"a71842cc525233c6500f5f8b347c683dde21a64e","kind":"commit","published_at":"2025-05-06T17:31:18.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v2.2.10","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v2.2.10","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.2.10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.2.10/manifests"},{"name":"v2.2.9","sha":"9931b4d2d8cfccf99d1988073cf1fe7009a26592","kind":"commit","published_at":"2025-05-06T14:42:44.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v2.2.9","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v2.2.9","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.2.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.2.9/manifests"},{"name":"v2.2.8","sha":"a3a323f9c9e907d7364fe9e9107b8628267e1320","kind":"commit","published_at":"2025-05-05T16:37:14.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v2.2.8","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v2.2.8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.2.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.2.8/manifests"},{"name":"v2.2.7","sha":"347c1fed3b5589557bbcc3103112c0b918befedd","kind":"commit","published_at":"2025-05-03T16:19:05.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v2.2.7","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v2.2.7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.2.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.2.7/manifests"},{"name":"v2.2.6","sha":"c01aabbd05ded1dddd737dc1c134f7c11218d6d7","kind":"commit","published_at":"2025-04-30T16:51:23.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v2.2.6","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v2.2.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.2.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.2.6/manifests"},{"name":"v2.2.5","sha":"42872a74a83dd5fb79d064d2349bd094f3214bbe","kind":"commit","published_at":"2025-04-26T01:15:53.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v2.2.5","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v2.2.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.2.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.2.5/manifests"},{"name":"v2.2.4","sha":"db265915befb289fbe787de333b579d7677c8562","kind":"commit","published_at":"2025-04-25T18:37:34.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v2.2.4","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v2.2.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.2.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.2.4/manifests"},{"name":"v2.2.3","sha":"7df8db451dbbaf4e96adfd8289b6e84e64b5a5b2","kind":"commit","published_at":"2025-04-25T00:27:40.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v2.2.3","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v2.2.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.2.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.2.3/manifests"},{"name":"v2.2.2","sha":"a4e233711fda1e232e24fd586cfd11c495bd14fe","kind":"commit","published_at":"2025-04-23T18:45:31.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v2.2.2","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v2.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.2.2/manifests"},{"name":"v2.2.1","sha":"0c15d606968bbc1c2282de70a7258eaa217e7ec1","kind":"commit","published_at":"2025-04-21T00:54:12.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v2.2.1","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v2.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.2.1/manifests"},{"name":"v2.2.0","sha":"91fba14c88a9f21698b815615d4e6a2e28fe72ee","kind":"commit","published_at":"2025-04-16T14:57:25.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v2.2.0","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v2.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.2.0/manifests"},{"name":"v2.1.2","sha":"7c6435b924bf718533d613c32be80c25837ac9b3","kind":"commit","published_at":"2025-04-14T20:41:47.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v2.1.2","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v2.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.1.2/manifests"},{"name":"v2.1.1","sha":"e119d652738cdae3865f335594e6798c2bc52129","kind":"commit","published_at":"2025-04-14T02:41:11.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v2.1.1","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v2.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.1.1/manifests"},{"name":"v2.1.0","sha":"097275842442027208e2633206d9bed94ed5e1ff","kind":"commit","published_at":"2025-04-13T01:59:52.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v2.1.0","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.1.0/manifests"},{"name":"v2.0.0","sha":"b6b23d6866249c29dbef7021d305ca62400162c4","kind":"commit","published_at":"2025-04-11T15:54:45.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v2.0.0","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v2.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v2.0.0/manifests"},{"name":"v1.0","sha":"654397bf0aa75bdddbbedd8c5bec440492e1147b","kind":"commit","published_at":"2025-03-22T22:00:48.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v1.0","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v1.0/manifests"},{"name":"v0.4.1","sha":"baa30086dad60a7dd530faee809d36d6ff7f5fa4","kind":"commit","published_at":"2024-12-09T13:31:52.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v0.4.1","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v0.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v0.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v0.4.1/manifests"},{"name":"v0.4.0","sha":"2212d39026bd0db2b8c5385586e8cb4c24a8a2d4","kind":"commit","published_at":"2024-12-05T00:48:14.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v0.4.0","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v0.4.0/manifests"},{"name":"v0.3.5","sha":"f03184b1f1f003d8020ecb1013dc8b979495b713","kind":"commit","published_at":"2024-12-03T01:51:46.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v0.3.5","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v0.3.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v0.3.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v0.3.5/manifests"},{"name":"v0.3.4","sha":"0f2b5a32d96c68f0fa5dc6f827af0f5bdf2af798","kind":"commit","published_at":"2024-12-02T17:56:30.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v0.3.4","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v0.3.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v0.3.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v0.3.4/manifests"},{"name":"v0.3.3","sha":"03cc8b104f2420867d6932520dfad7a8c04bf240","kind":"commit","published_at":"2024-12-02T02:00:39.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v0.3.3","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v0.3.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v0.3.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v0.3.3/manifests"},{"name":"v0.3.2","sha":"438302707d2f400b9e862645fb55beae94d6b82f","kind":"commit","published_at":"2024-12-01T03:26:07.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v0.3.2","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v0.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v0.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v0.3.2/manifests"},{"name":"v0.3.1","sha":"56562003d6fd50486c251dc3d47cbf82c6133439","kind":"commit","published_at":"2024-12-01T01:32:18.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v0.3.1","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v0.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v0.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v0.3.1/manifests"},{"name":"v0.3.0","sha":"0d2710255246597cb3ba7ac9e26d33e21978020d","kind":"commit","published_at":"2024-12-01T00:54:59.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v0.3.0","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v0.3.0/manifests"},{"name":"v0.2.0","sha":"627cf8a84e9ecb5ab3fc95ae1ce3955663033ec8","kind":"commit","published_at":"2024-11-30T03:58:38.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v0.2.0","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v0.2.0/manifests"},{"name":"v0.1.0","sha":"ca7438f15cd61d03a58029d2294308315bd22b80","kind":"commit","published_at":"2024-11-30T02:10:16.000Z","download_url":"https://codeload.github.com/jlowin/fastmcp/tar.gz/v0.1.0","html_url":"https://github.com/jlowin/fastmcp/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlowin%2Ffastmcp/tags/v0.1.0/manifests"}]},"repo_metadata_updated_at":"2025-06-02T22:47:39.447Z","dependent_packages_count":0,"downloads":843944,"downloads_period":"last-month","dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":56.023748251926875,"dependent_packages_count":9.953640142783252,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":32.988694197355066},"purl":"pkg:pypi/fastmcp","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/fastmcp","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/fastmcp","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/fastmcp/dependencies","status":null,"funding_links":[],"critical":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/fastmcp/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/fastmcp/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/fastmcp/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/fastmcp/related_packages","maintainers":[{"uuid":"jlowin","login":"jlowin","name":null,"email":null,"url":null,"packages_count":6,"html_url":"https://pypi.org/user/jlowin/","role":null,"created_at":"2024-11-30T02:33:44.722Z","updated_at":"2024-11-30T02:33:44.722Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/jlowin/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":690322,"maintainers_count":292759,"namespaces_count":0,"keywords_count":228590,"github":"pypi","metadata":{"funded_packages_count":48950},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-06-06T05:32:09.692Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}},"unique_repositories_count":266,"unique_repositories_count_past_30_days":17,"recent_issues":[{"uuid":"4609297898","node_id":"PR_kwDOPQ3Q787jt-K9","number":34,"state":"closed","title":"chore(deps): bump fastmcp from 3.2.4 to 3.4.2","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-08T01:20:48.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-08T00:54:17.000Z","updated_at":"2026-06-08T01:20:50.000Z","time_to_close":1591,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"fastmcp","old_version":"3.2.4","new_version":"3.4.2","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":null,"ecosystem":"pip"},"body":"Bumps [fastmcp](https://github.com/PrefectHQ/fastmcp) from 3.2.4 to 3.4.2.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.4.2: Heads Up\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.4.2 restores JWT compatibility for providers that include private, non-critical JWS header parameters. Tokens from providers like Clerk can carry header metadata such as \u003ccode\u003ecat\u003c/code\u003e without being rejected before signature and claim validation, while unsupported critical headers are still rejected.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow private JWT headers by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4290\"\u003ePrefectHQ/fastmcp#4290\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocs: add v3.4.1 changelog entries by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4289\"\u003ePrefectHQ/fastmcp#4289\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.4.1...v3.4.2\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.4.1...v3.4.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.4.1: Floor It\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.4.1 floors Starlette at \u003ccode\u003e\u0026gt;=1.0.1\u003c/code\u003e so installs can no longer resolve to a version affected by CVE-2026-48710 — previously the dependency was only constrained transitively through \u003ccode\u003emcp\u003c/code\u003e, which allowed vulnerable versions. It also makes OAuthProxy log refresh-token cache misses instead of failing silently.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eEnhancements ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLog refresh-token misses in OAuthProxy instead of failing silently by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4276\"\u003ePrefectHQ/fastmcp#4276\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity 🔒\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd explicit starlette\u0026gt;=1.0.1 floor (CVE-2026-48710) by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4286\"\u003ePrefectHQ/fastmcp#4286\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument --notes-start-tag in release instructions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4275\"\u003ePrefectHQ/fastmcp#4275\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.4.0...v3.4.1\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.4.0...v3.4.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.4.0: Remote Control\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.4 is about reaching servers that live somewhere else. The headline is \u003ccode\u003efastmcp-remote\u003c/code\u003e, a standalone bridge that connects stdio-only MCP hosts to servers hosted over HTTP. Around it, this release hardens the proxy layer those remote connections depend on — making bridges fail loudly instead of silently, and keeping authenticated sessions alive across the long idle periods that remote clients are prone to.\u003c/p\u003e\n\u003ch2\u003efastmcp-remote\u003c/h2\u003e\n\u003cp\u003eSome MCP hosts still insist on launching a local stdio command, even when the server you want is already running over HTTP. FastMCP could already proxy a remote URL through \u003ccode\u003efastmcp run\u003c/code\u003e, but that pulls in the full server-runner surface. \u003ccode\u003efastmcp-remote\u003c/code\u003e is the small, single-purpose version: one URL in, one local stdio proxy out.\u003c/p\u003e\n\u003cpre lang=\"json\"\u003e\u003ccode\u003e{\n  \u0026quot;mcpServers\u0026quot;: {\n    \u0026quot;linear\u0026quot;: {\n      \u0026quot;command\u0026quot;: \u0026quot;uvx\u0026quot;,\n      \u0026quot;args\u0026quot;: [\u0026quot;fastmcp-remote\u0026quot;, \u0026quot;https://mcp.linear.app/mcp\u0026quot;]\n    }\n  }\n}\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOAuth is enabled automatically for HTTPS servers, with support for explicit bearer tokens and custom headers when you need them. The implementation stays on FastMCP primitives — \u003ccode\u003eClient\u003c/code\u003e, OAuth, \u003ccode\u003ecreate_proxy\u003c/code\u003e, and stdio — and credits the original npm \u003ccode\u003emcp-remote\u003c/code\u003e project for the command shape.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/3b8538e2422a1c43fdb69661c610de7985b785f2\"\u003e\u003ccode\u003e3b8538e\u003c/code\u003e\u003c/a\u003e Allow private JWT headers (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4290\"\u003e#4290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/0445c31feffa5581b1e47cbe3ea75eaabed18f9d\"\u003e\u003ccode\u003e0445c31\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4223\"\u003e#4223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/9261793ae0858f009b6550159287a4965da9d51f\"\u003e\u003ccode\u003e9261793\u003c/code\u003e\u003c/a\u003e Docs: add v3.4.1 changelog entries (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4289\"\u003e#4289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/e1b52d00fe579faf3b76a3364a5639aec9ad8014\"\u003e\u003ccode\u003ee1b52d0\u003c/code\u003e\u003c/a\u003e Add explicit starlette\u0026gt;=1.0.1 floor (CVE-2026-48710) (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4286\"\u003e#4286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/e58f386bacefe4283a8782b821ae0305c36bb073\"\u003e\u003ccode\u003ee58f386\u003c/code\u003e\u003c/a\u003e Log refresh-token misses in OAuthProxy instead of failing silently (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4276\"\u003e#4276\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/3f09c683cc440b308c17db5a8f9c89ce4449df6c\"\u003e\u003ccode\u003e3f09c68\u003c/code\u003e\u003c/a\u003e Document --notes-start-tag requirement in release instructions (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4275\"\u003e#4275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/e124bde34eeea66f5472e239c70cda247508da34\"\u003e\u003ccode\u003ee124bde\u003c/code\u003e\u003c/a\u003e Fix MDX syntax error in changelog (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4270\"\u003e#4270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/dae11bbc40fd4ef3cf0a61e1f2363a1630186ba8\"\u003e\u003ccode\u003edae11bb\u003c/code\u003e\u003c/a\u003e Backfill changelog and updates through v3.4.0 (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4269\"\u003e#4269\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/0f4f78c46491a001ba0b409ef643a6649428a951\"\u003e\u003ccode\u003e0f4f78c\u003c/code\u003e\u003c/a\u003e Fix resource templates with query params on proxied servers (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4251\"\u003e#4251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/1a06130fcfaece1d494bf444c1561e752d94c61a\"\u003e\u003ccode\u003e1a06130\u003c/code\u003e\u003c/a\u003e Fix GitHub MCP resource integration test (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4253\"\u003e#4253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.2.4...v3.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n","html_url":"https://github.com/briandconnelly/mcp-server-tempest/pull/34","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/briandconnelly%2Fmcp-server-tempest/issues/34","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/34/packages"},{"uuid":"4609052745","node_id":"PR_kwDOR5hRIs7jtMwf","number":37,"state":"open","title":"chore(deps): update fastmcp requirement from \u003e=3.2.4 to \u003e=3.4.2","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-06-07T23:22:36.000Z","updated_at":"2026-06-07T23:23:43.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): update","packages":[{"name":"fastmcp","old_version":"\u003e=3.2.4","new_version":"\u003e=3.4.2","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [fastmcp](https://github.com/PrefectHQ/fastmcp) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.4.2: Heads Up\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.4.2 restores JWT compatibility for providers that include private, non-critical JWS header parameters. Tokens from providers like Clerk can carry header metadata such as \u003ccode\u003ecat\u003c/code\u003e without being rejected before signature and claim validation, while unsupported critical headers are still rejected.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow private JWT headers by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4290\"\u003ePrefectHQ/fastmcp#4290\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocs: add v3.4.1 changelog entries by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4289\"\u003ePrefectHQ/fastmcp#4289\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.4.1...v3.4.2\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.4.1...v3.4.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/blob/main/docs/changelog.mdx\"\u003efastmcp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003chr /\u003e\n\u003ch2\u003etitle: \u0026quot;Changelog\u0026quot;\nicon: \u0026quot;list-check\u0026quot;\nrss: true\ntag: NEW\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.4.1\"\u003ev3.4.1: Floor It\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFastMCP 3.4.1 floors Starlette at \u003ccode\u003e\u0026gt;=1.0.1\u003c/code\u003e so installs can no longer resolve to a version affected by CVE-2026-48710, which was previously only constrained transitively through \u003ccode\u003emcp\u003c/code\u003e. It also makes OAuthProxy log refresh-token cache misses instead of failing silently.\u003c/p\u003e\n\u003ch3\u003eEnhancements ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLog refresh-token misses in OAuthProxy instead of failing silently by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4276\"\u003e#4276\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity 🔒\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd explicit starlette\u0026gt;=1.0.1 floor (CVE-2026-48710) by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4286\"\u003e#4286\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument --notes-start-tag in release instructions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4275\"\u003e#4275\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.4.0...v3.4.1\"\u003ev3.4.0...v3.4.1\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.4.0\"\u003ev3.4.0: Remote Control\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFastMCP 3.4 is about reaching servers that live somewhere else. The headline is \u003ccode\u003efastmcp-remote\u003c/code\u003e, a standalone bridge that connects stdio-only MCP hosts to servers hosted over HTTP. Around it, the proxy layer those connections depend on is hardened: a proxy now forwards \u003ccode\u003einitialize\u003c/code\u003e upstream and fails loudly when the backend is missing or misconfigured, instead of reporting a connected-but-empty proxy. And FastMCP-issued access tokens can now outlive short-lived upstream tokens, so authenticated sessions survive the long idle periods remote clients are prone to.\u003c/p\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd fastmcp-remote bridge package by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4208\"\u003e#4208\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes ⚠️\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eForward proxy initialize as bridge behavior by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4228\"\u003e#4228\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eci: require external PRs to link a tracked issue by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4173\"\u003e#4173\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: new options --host and --no-log-panel | --log-panel  to cli dev apps by \u003ca href=\"https://github.com/itaru2622\"\u003e\u003ccode\u003e@​itaru2622\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4123\"\u003e#4123\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd valid_scopes and extra_authorize_params to WorkOSProvider by \u003ca href=\"https://github.com/tiagoskaneta\"\u003e\u003ccode\u003e@​tiagoskaneta\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4135\"\u003e#4135\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd token_expiry_threshold_seconds for proactive token refresh by \u003ca href=\"https://github.com/mohankumarelec\"\u003e\u003ccode\u003e@​mohankumarelec\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4142\"\u003e#4142\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd review-issue skill for triaging gated external contributions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4212\"\u003e#4212\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd contract gate to review-issue skill by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4214\"\u003e#4214\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLet ToolResult return an error result via is_error by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4217\"\u003e#4217\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate published docs after PyPI release by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4211\"\u003e#4211\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow pre-bound HTTP sockets by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4222\"\u003e#4222\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd targeted coverage tests by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4230\"\u003e#4230\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade ty to 0.0.39 by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4225\"\u003e#4225\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecouple FastMCP access token lifetime from upstream expires_in by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4254\"\u003e#4254\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity 🔒\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat(code-mode): default sandbox limits and per-execution tool-call cap by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4170\"\u003e#4170\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSecurity: Fix 3 findings in GitHub Actions workflows by \u003ca href=\"https://github.com/jpr5\"\u003e\u003ccode\u003e@​jpr5\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4183\"\u003e#4183\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/3b8538e2422a1c43fdb69661c610de7985b785f2\"\u003e\u003ccode\u003e3b8538e\u003c/code\u003e\u003c/a\u003e Allow private JWT headers (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4290\"\u003e#4290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/0445c31feffa5581b1e47cbe3ea75eaabed18f9d\"\u003e\u003ccode\u003e0445c31\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4223\"\u003e#4223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/9261793ae0858f009b6550159287a4965da9d51f\"\u003e\u003ccode\u003e9261793\u003c/code\u003e\u003c/a\u003e Docs: add v3.4.1 changelog entries (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4289\"\u003e#4289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/e1b52d00fe579faf3b76a3364a5639aec9ad8014\"\u003e\u003ccode\u003ee1b52d0\u003c/code\u003e\u003c/a\u003e Add explicit starlette\u0026gt;=1.0.1 floor (CVE-2026-48710) (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4286\"\u003e#4286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/e58f386bacefe4283a8782b821ae0305c36bb073\"\u003e\u003ccode\u003ee58f386\u003c/code\u003e\u003c/a\u003e Log refresh-token misses in OAuthProxy instead of failing silently (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4276\"\u003e#4276\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/3f09c683cc440b308c17db5a8f9c89ce4449df6c\"\u003e\u003ccode\u003e3f09c68\u003c/code\u003e\u003c/a\u003e Document --notes-start-tag requirement in release instructions (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4275\"\u003e#4275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/e124bde34eeea66f5472e239c70cda247508da34\"\u003e\u003ccode\u003ee124bde\u003c/code\u003e\u003c/a\u003e Fix MDX syntax error in changelog (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4270\"\u003e#4270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/dae11bbc40fd4ef3cf0a61e1f2363a1630186ba8\"\u003e\u003ccode\u003edae11bb\u003c/code\u003e\u003c/a\u003e Backfill changelog and updates through v3.4.0 (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4269\"\u003e#4269\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/0f4f78c46491a001ba0b409ef643a6649428a951\"\u003e\u003ccode\u003e0f4f78c\u003c/code\u003e\u003c/a\u003e Fix resource templates with query params on proxied servers (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4251\"\u003e#4251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/1a06130fcfaece1d494bf444c1561e752d94c61a\"\u003e\u003ccode\u003e1a06130\u003c/code\u003e\u003c/a\u003e Fix GitHub MCP resource integration test (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4253\"\u003e#4253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.2.4...v3.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/stevesimpson418/mcp-repo-template/pull/37","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/stevesimpson418%2Fmcp-repo-template/issues/37","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/37/packages"},{"uuid":"4585728906","node_id":"PR_kwDORxQeyM7ihdpL","number":74,"state":"closed","title":"chore(deps): bump the python-deps group across 1 directory with 12 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-11T02:16:40.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-04T04:16:45.000Z","updated_at":"2026-06-11T02:16:42.000Z","time_to_close":597595,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-deps","update_count":12,"packages":[{"name":"pydantic","old_version":"2.13.3","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.14.0","new_version":"2.14.1","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"click","old_version":"8.3.2","new_version":"8.4.1","repository_url":"https://github.com/pallets/click"},{"name":"fastmcp","old_version":"3.2.4","new_version":"3.3.1","repository_url":"https://github.com/PrefectHQ/fastmcp"},{"name":"pytest-asyncio","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"ruff","old_version":"0.15.11","new_version":"0.15.14","repository_url":"https://github.com/astral-sh/ruff"},{"name":"mypy","old_version":"1.20.2","new_version":"2.1.0","repository_url":"https://github.com/python/mypy"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [fastapi[standard]](https://github.com/fastapi/fastapi), [sqlalchemy[asyncio]](https://github.com/sqlalchemy/sqlalchemy), [pydantic](https://github.com/pydantic/pydantic), [pydantic-settings](https://github.com/pydantic/pydantic-settings), [click](https://github.com/pallets/click), [fastmcp](https://github.com/PrefectHQ/fastmcp), [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio), [coverage[toml]](https://github.com/coveragepy/coveragepy), [ruff](https://github.com/astral-sh/ruff), [mypy](https://github.com/python/mypy), [types-pyyaml](https://github.com/python/typeshed) and [types-requests](https://github.com/python/typeshed) to permit the latest version.\nUpdates `fastapi[standard]` to 0.136.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi[standard]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.136.3\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Do not accept underscore headers when using \u003ccode\u003econvert_underscores=True\u003c/code\u003e (the default). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15589\"\u003e#15589\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/82064857539e6286522c347b4b11331b48dd2378\"\u003e\u003ccode\u003e8206485\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.136.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c910e0139f983d0e04e2d1d235cd71803afeae34\"\u003e\u003ccode\u003ec910e01\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/063b5bf582d31fb155cc6bc6f88cf512329d0fd5\"\u003e\u003ccode\u003e063b5bf\u003c/code\u003e\u003c/a\u003e ♻️ Do not accept underscore headers when using \u003ccode\u003econvert_underscores=True\u003c/code\u003e (th...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/22b02e26f9e8c7e32bd8266e2b0ebe8bb3a0db2b\"\u003e\u003ccode\u003e22b02e2\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.136.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/3b252a2a22ba27a8ab83d6bde7d9cddbc5bf738e\"\u003e\u003ccode\u003e3b252a2\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c7fb7851b3389f24c51701d705458989be53ccbb\"\u003e\u003ccode\u003ec7fb785\u003c/code\u003e\u003c/a\u003e ♻️ Validate Server Sent Event fields to avoid applications from sending broke...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cb83b83dcf78eab4ea17d504db5abcda705fbdc4\"\u003e\u003ccode\u003ecb83b83\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/00f805cec94c0bf48c1f9a563535a3ab2e6f90ab\"\u003e\u003ccode\u003e00f805c\u003c/code\u003e\u003c/a\u003e ✅ Update tests, don't double dispose the engine (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15587\"\u003e#15587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/3675137523dc167981aa3a3c44599b4f3079ccd8\"\u003e\u003ccode\u003e3675137\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7b57e42986bb4d40c9eb6580537d13fb8e76097e\"\u003e\u003ccode\u003e7b57e42\u003c/code\u003e\u003c/a\u003e 📝 Document \u003ccode\u003e--entrypoint\u003c/code\u003e CLI option (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15464\"\u003e#15464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.136.0...0.136.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy[asyncio]` to 2.0.50\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy[asyncio]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.50\u003c/h1\u003e\n\u003cp\u003eReleased: May 24, 2026\u003c/p\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue where using \u003ccode\u003e_orm.joinedload()\u003c/code\u003e with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e targeting a joined-table subclass combined\nwith \u003ccode\u003ePropComparator.and_()\u003c/code\u003e referencing a column on that subclass\nwould generate invalid SQL, where the subclass column was not adapted to\nthe subquery alias.  Pull request courtesy Joaquin Hui Gomez.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13203\"\u003e#13203\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue where the presence of a \u003ccode\u003eSessionEvents.do_orm_execute()\u003c/code\u003e\nevent hook would cause internal execution options such as \u003ccode\u003eyield_per\u003c/code\u003e and\nloader-specific state from the first \u003ccode\u003eorm_pre_session_exec\u003c/code\u003e pass to leak\ninto the second pass, leading to errors when using relationship loaders\nsuch as \u003ccode\u003eselectinload()\u003c/code\u003e and \u003ccode\u003eimmediateload()\u003c/code\u003e.  The execution\noptions passed to the second compilation pass are now based on the original\noptions plus only the explicit updates made via\n\u003ccode\u003eORMExecuteState.update_execution_options()\u003c/code\u003e within the event hook.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13301\"\u003e#13301\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue where using \u003ccode\u003e_orm.with_polymorphic()\u003c/code\u003e on a leaf class (a\nsubclass with no further descendants) or a non-inherited class would fail\nwith an \u003ccode\u003eAttributeError\u003c/code\u003e when used in an ORM statement, due to\n\u003ccode\u003e_orm.configure_mappers()\u003c/code\u003e not being triggered implicitly. The fix\nensures that \u003ccode\u003eAliasedInsp\u003c/code\u003e participates in the \u003ccode\u003e_post_inspect\u003c/code\u003e\nhook, triggering mapper configuration during ORM statement compilation.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13319\"\u003e#13319\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where floor division (\u003ccode\u003e//\u003c/code\u003e) between a \u003ccode\u003eFloat\u003c/code\u003e or\n\u003ccode\u003eNumeric\u003c/code\u003e numerator and an \u003ccode\u003eInteger\u003c/code\u003e denominator would omit\nthe \u003ccode\u003eFLOOR()\u003c/code\u003e SQL wrapper on dialects where\n\u003ccode\u003eDialect.div_is_floordiv\u003c/code\u003e is \u003ccode\u003eTrue\u003c/code\u003e (the default, including\nPostgreSQL and SQLite).  \u003ccode\u003eFLOOR()\u003c/code\u003e is now applied if either the\ndenominator or the numerator is a non-integer, so that expressions such as\n\u003ccode\u003efloat_col // int_col\u003c/code\u003e render as \u003ccode\u003eFLOOR(float_col / int_col)\u003c/code\u003e instead\nof the incorrect \u003ccode\u003efloat_col / int_col\u003c/code\u003e.  Pull request courtesy r266-tech.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10528\"\u003e#10528\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epostgresql\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.13.3 to 2.13.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/cf67d4b3193c3fe43ede18612ed62785eee11382\"\u003e\u003ccode\u003ecf67d4b\u003c/code\u003e\u003c/a\u003e Fix linting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f0d8a214a5803036db46a56b1f62f1e56b81d662\"\u003e\u003ccode\u003ef0d8a21\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/5e3fe1d41a00f441204241c66078003ae0391f9a\"\u003e\u003ccode\u003e5e3fe1d\u003c/code\u003e\u003c/a\u003e Check for pydantic tag pattern in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7f9edcc2a191d2eaa9751220eb910914e716a686\"\u003e\u003ccode\u003e7f9edcc\u003c/code\u003e\u003c/a\u003e Document tagging conventions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b46a0c9b8a4dd967fda8ec1a92f6437076bf262c\"\u003e\u003ccode\u003eb46a0c9\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/50629c851e61d887d5420452c311ec6203f1f400\"\u003e\u003ccode\u003e50629c8\u003c/code\u003e\u003c/a\u003e Update to PyPy 7.3.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8522ebb71e5e9a6f7188af5f009f01785b8cf725\"\u003e\u003ccode\u003e8522ebb\u003c/code\u003e\u003c/a\u003e Preserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a37f3aff090ca342dc5f48304889963530b993f8\"\u003e\u003ccode\u003ea37f3af\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003eMISSING\u003c/code\u003e sentinel test to work with unreleased \u003ccode\u003etyping_extensions\u003c/code\u003e ver...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/909259a9df660518033aa686b689f045a6eaf9d2\"\u003e\u003ccode\u003e909259a\u003c/code\u003e\u003c/a\u003e Remove Logfire example in documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c4174c366606fc2dc46cb806833a080aefa77df\"\u003e\u003ccode\u003e2c4174c\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.155 to 0.2.185\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-settings` from 2.14.0 to 2.14.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-settings/releases\"\u003epydantic-settings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the python-packages group with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/850\"\u003epydantic/pydantic-settings#850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 5 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/854\"\u003epydantic/pydantic-settings#854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/853\"\u003epydantic/pydantic-settings#853\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/856\"\u003epydantic/pydantic-settings#856\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix field named \u003ccode\u003ecls\u003c/code\u003e conflicting with classmethod parameter by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/858\"\u003epydantic/pydantic-settings#858\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare release 2.14.1 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/859\"\u003epydantic/pydantic-settings#859\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.14.0...v2.14.1\"\u003ehttps://github.com/pydantic/pydantic-settings/compare/v2.14.0...v2.14.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/e95c30bec8cfaee88ee275138c064aea97a25bdf\"\u003e\u003ccode\u003ee95c30b\u003c/code\u003e\u003c/a\u003e Prepare release 2.14.1 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/859\"\u003e#859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/0c8734581b6cf70a995afad603ac456631d00621\"\u003e\u003ccode\u003e0c87345\u003c/code\u003e\u003c/a\u003e Fix field named \u003ccode\u003ecls\u003c/code\u003e conflicting with classmethod parameter (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/858\"\u003e#858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/7bd0072795a800065b42210b6dca90fc9b83daf7\"\u003e\u003ccode\u003e7bd0072\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 2 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/856\"\u003e#856\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/b03e573d017ed48e1c2774a5e0b715db9766c76b\"\u003e\u003ccode\u003eb03e573\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/853\"\u003e#853\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/eaa3b434938411ec8a3717ea646614561e713f51\"\u003e\u003ccode\u003eeaa3b43\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 5 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/854\"\u003e#854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/9f95615c24c6813c1d7d203576581a79cb6d9e8e\"\u003e\u003ccode\u003e9f95615\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/850\"\u003e#850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.14.0...v2.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.3.2 to 8.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.4.1\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.4.1/\"\u003ehttps://pypi.org/project/click/8.4.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-4-1\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-4-1\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/32?closed=1\"\u003ehttps://github.com/pallets/click/milestone/32?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eget_parameter_source()\u003c/code\u003e is available during eager callbacks and type conversion again. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3458\"\u003e#3458\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3484\"\u003e#3484\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eZsh completion scripts parse correctly on Windows. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3277\"\u003e#3277\u003c/a\u003e # 3466\u003c/li\u003e\n\u003cli\u003eShell completion of \u003ccode\u003eChoice\u003c/code\u003e \u003ccode\u003eEnum\u003c/code\u003e values produces a valid completion result. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3015\"\u003e#3015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix empty byte-string handling in echo. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3487\"\u003e#3487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix closed file error with \u003ccode\u003eecho_via_pager\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3449\"\u003e#3449\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.4.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.4.0/\"\u003ehttps://pypi.org/project/click/8.4.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-4-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-4-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/30\"\u003ehttps://github.com/pallets/click/milestone/30\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eParamType\u003c/code\u003e typing improvements. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3371\"\u003e#3371\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParamType\u003c/code\u003e is now a generic abstract base class,\nparameterized by its converted value type.\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.convert\u003c/code\u003e return types are narrowed on all\nconcrete types (\u003ccode\u003estr\u003c/code\u003e for :class:\u003ccode\u003eSTRING\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e for\n:class:\u003ccode\u003eINT\u003c/code\u003e, etc.).\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.to_info_dict\u003c/code\u003e returns specific\n:class:\u003ccode\u003e~typing.TypedDict\u003c/code\u003e subclasses instead of\n\u003ccode\u003edict[str, Any]\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:class:\u003ccode\u003eCompositeParamType\u003c/code\u003e and the number-range base are now\ngeneric with abstract methods.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRefactor \u003ccode\u003econvert_type\u003c/code\u003e to extract type inference into a private\n\u003ccode\u003e_guess_type\u003c/code\u003e helper, and add :func:\u003ccode\u003etyping.overload\u003c/code\u003e signatures.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3372\"\u003e#3372\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eParameter\u003c/code\u003e typing improvements. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2805\"\u003e#2805\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParameter\u003c/code\u003e is now an abstract base class, making explicit\nthat it cannot be instantiated directly.\u003c/li\u003e\n\u003cli\u003e:attr:\u003ccode\u003eParameter.name\u003c/code\u003e is now \u003ccode\u003estr\u003c/code\u003e instead of \u003ccode\u003estr | None\u003c/code\u003e.\nWhen \u003ccode\u003eexpose_value=False\u003c/code\u003e, the name is set to \u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e instead\nof \u003ccode\u003eNone\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ectx\u003c/code\u003e parameter of :meth:\u003ccode\u003eParameter.get_error_hint\u003c/code\u003e is now\ntyped as \u003ccode\u003eContext | None\u003c/code\u003e, matching the runtime behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSplit string values from \u003ccode\u003edefault_map\u003c/code\u003e for parameters with \u003ccode\u003enargs \u0026gt; 1\u003c/code\u003e\nor :class:\u003ccode\u003eTuple\u003c/code\u003e type, matching environment variable behavior.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.4.1\u003c/h2\u003e\n\u003cp\u003eReleased 2026-05-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eget_parameter_source()\u003c/code\u003e is available during eager callbacks and type\nconversion again. :issue:\u003ccode\u003e3458\u003c/code\u003e :issue:\u003ccode\u003e3484\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eZsh completion scripts parse correctly on Windows. :issue:\u003ccode\u003e3277\u003c/code\u003e :pr:\u003ccode\u003e3466\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eShell completion of \u003ccode\u003eChoice\u003c/code\u003e \u003ccode\u003eEnum\u003c/code\u003e values produces a valid completion\nresult. :issue:\u003ccode\u003e3015\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix empty byte-string handling in echo. :issue:\u003ccode\u003e3487\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix closed file error with \u003ccode\u003eecho_via_pager\u003c/code\u003e. :issue:\u003ccode\u003e3449\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.4.0\u003c/h2\u003e\n\u003cp\u003eReleased 2026-05-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e:class:\u003ccode\u003eParamType\u003c/code\u003e typing improvements. :pr:\u003ccode\u003e3371\u003c/code\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParamType\u003c/code\u003e is now a generic abstract base class,\nparameterized by its converted value type.\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.convert\u003c/code\u003e return types are narrowed on all\nconcrete types (\u003ccode\u003estr\u003c/code\u003e for :class:\u003ccode\u003eSTRING\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e for\n:class:\u003ccode\u003eINT\u003c/code\u003e, etc.).\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.to_info_dict\u003c/code\u003e returns specific\n:class:\u003ccode\u003e~typing.TypedDict\u003c/code\u003e subclasses instead of\n\u003ccode\u003edict[str, Any]\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:class:\u003ccode\u003eCompositeParamType\u003c/code\u003e and the number-range base are now\ngeneric with abstract methods.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRefactor \u003ccode\u003econvert_type\u003c/code\u003e to extract type inference into a private\n\u003ccode\u003e_guess_type\u003c/code\u003e helper, and add :func:\u003ccode\u003etyping.overload\u003c/code\u003e signatures.\n:pr:\u003ccode\u003e3372\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e:class:\u003ccode\u003eParameter\u003c/code\u003e typing improvements. :pr:\u003ccode\u003e2805\u003c/code\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParameter\u003c/code\u003e is now an abstract base class, making explicit\nthat it cannot be instantiated directly.\u003c/li\u003e\n\u003cli\u003e:attr:\u003ccode\u003eParameter.name\u003c/code\u003e is now \u003ccode\u003estr\u003c/code\u003e instead of \u003ccode\u003estr | None\u003c/code\u003e.\nWhen \u003ccode\u003eexpose_value=False\u003c/code\u003e, the name is set to \u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e instead\nof \u003ccode\u003eNone\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ectx\u003c/code\u003e parameter of :meth:\u003ccode\u003eParameter.get_error_hint\u003c/code\u003e is now\ntyped as \u003ccode\u003eContext | None\u003c/code\u003e, matching the runtime behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSplit string values from \u003ccode\u003edefault_map\u003c/code\u003e for parameters with \u003ccode\u003enargs \u0026gt; 1\u003c/code\u003e\nor :class:\u003ccode\u003eTuple\u003c/code\u003e type, matching environment variable behavior.\n:issue:\u003ccode\u003e2745\u003c/code\u003e :pr:\u003ccode\u003e3364\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAuto-detect \u003ccode\u003etype=UNPROCESSED\u003c/code\u003e for \u003ccode\u003eflag_value\u003c/code\u003e of non-basic types\n(not \u003ccode\u003estr\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e, \u003ccode\u003efloat\u003c/code\u003e, or \u003ccode\u003ebool\u003c/code\u003e), so programmer-provided\nPython objects like classes and enum members are passed through unchanged\ninstead of being stringified. Previously \u003ccode\u003etype=click.UNPROCESSED\u003c/code\u003e had\nto be set explicitly. :issue:\u003ccode\u003e2012\u003c/code\u003e :pr:\u003ccode\u003e3363\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/6eeb50e948ea136db145280f6f5dd52eca3fa7e5\"\u003e\u003ccode\u003e6eeb50e\u003c/code\u003e\u003c/a\u003e release version 8.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/67921d5b71584112eebcbf89596b5f0e6d14c49f\"\u003e\u003ccode\u003e67921d5\u003c/code\u003e\u003c/a\u003e change log and doc fixes (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3495\"\u003e#3495\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/9c41f46a4015700489ad009266edf1f3893d01d1\"\u003e\u003ccode\u003e9c41f46\u003c/code\u003e\u003c/a\u003e Fix changelog and version admonitions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/6cb34774f20598aa288332f8da02c5aee85448a6\"\u003e\u003ccode\u003e6cb3477\u003c/code\u003e\u003c/a\u003e fix skip condition\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/5ee8e3123d8ddece6c47eff9a7a7d4ca478c4f37\"\u003e\u003ccode\u003e5ee8e31\u003c/code\u003e\u003c/a\u003e fix I/O operation on closed file error with CliRunner and echo_via_pager (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3482\"\u003e#3482\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/becbde5cf416441627f779e8dd34e57738ee1c1f\"\u003e\u003ccode\u003ebecbde5\u003c/code\u003e\u003c/a\u003e pager doesn't close std streams\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a5f5aa6d4012d256ccca24638f2642fc371e9f77\"\u003e\u003ccode\u003ea5f5aa6\u003c/code\u003e\u003c/a\u003e Handle empty bytes in echo (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3493\"\u003e#3493\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/4d3db84b251518e97299a38a5ca4bab3d01873a2\"\u003e\u003ccode\u003e4d3db84\u003c/code\u003e\u003c/a\u003e handle empty bytes in echo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d42f15b71757de791a5781fb179fd972da9169f5\"\u003e\u003ccode\u003ed42f15b\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eget_parameter_source()\u003c/code\u003e during type conversion and eager callbacks (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3484\"\u003e#3484\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/0baa8db07736fc7ad3d3eed97d4c73b0059c63e1\"\u003e\u003ccode\u003e0baa8db\u003c/code\u003e\u003c/a\u003e Document ctx.params bypass with test and doc\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.3.2...8.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastmcp` from 3.2.4 to 3.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1: Loop There It Is\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3.1 is a hotfix for the 3.3 packaging split. Clean installs of 3.3.0 could fail on standalone component imports like \u003ccode\u003efrom fastmcp.tools import tool\u003c/code\u003e because component modules reached auth and task primitives through \u003ccode\u003efastmcp.server\u003c/code\u003e, pulling in the server/provider stack and exposing a circular import.\u003c/p\u003e\n\u003cp\u003eComponent-level auth and task primitives now live in lightweight utility modules, with the old server import paths preserved as compatibility re-exports. Component imports stay lightweight, existing server-facing imports continue to work, and the release also includes small docs corrections from the 3.3 rollout.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(docs): use valid FA icon on client-only package page by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4139\"\u003ePrefectHQ/fastmcp#4139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecouple component imports from server by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4150\"\u003ePrefectHQ/fastmcp#4150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.3.0: Slim Reaper\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3 ships \u003ccode\u003efastmcp-slim\u003c/code\u003e, a new lightweight distribution that separates the client from the server stack. It also closes out a meaningful backlog of security hardening, observability improvements, and auth additions that accumulated through the 3.2 cycle.\u003c/p\u003e\n\u003ch2\u003efastmcp-slim\u003c/h2\u003e\n\u003cp\u003eThe full FastMCP package pulls in Starlette, Uvicorn, and the rest of the server machinery — necessary for running a server, but wasteful if you're writing a client, a script, or an agent that just needs to talk to MCP. \u003ccode\u003efastmcp-slim\u003c/code\u003e is a dependency-light distribution that ships the client and transport layer without any of that.\u003c/p\u003e\n\u003cp\u003eThe import namespace is unchanged:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom fastmcp import Client\n\u003cp\u003easync with Client(\u0026quot;\u003ca href=\"https://example.com/mcp\"\u003ehttps://example.com/mcp\u003c/a\u003e\u0026quot;) as client:\nresult = await client.call_tool(\u0026quot;my_tool\u0026quot;, {\u0026quot;arg\u0026quot;: \u0026quot;value\u0026quot;})\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eInstall \u003ccode\u003efastmcp-slim[client]\u003c/code\u003e anywhere you want FastMCP's client without the server footprint — CI environments, lightweight agents, library dependencies that shouldn't force Uvicorn on downstream users.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003eThe OAuth proxy received three hardening upgrades. Silent consent is now guarded against AS-in-the-middle attacks — a malicious authorization server can no longer silently approve a consent it wasn't meant to handle. Redirect URI allowlist matching now rejects dot-segment paths (\u003ccode\u003e/../\u003c/code\u003e, \u003ccode\u003e/./\u003c/code\u003e) that could otherwise bypass prefix checks. And \u003ccode\u003eResponseCachingMiddleware\u003c/code\u003e partitions its cache by access token, closing a gap where different users could see each other's cached responses.\u003c/p\u003e\n\u003ch2\u003eAuth\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eAzureB2CProvider\u003c/code\u003e adds first-class support for Azure AD B2C user flows. The OCI provider is fixed for 3.x installs. And \u003ccode\u003eOAuthProxy\u003c/code\u003e gains a public \u003ccode\u003eupdate_scopes()\u003c/code\u003e API for updating the proxy's required scopes after initialization — useful for servers that determine scope requirements at runtime.\u003c/p\u003e\n\u003ch2\u003eObservability\u003c/h2\u003e\n\u003cp\u003eOTEL instrumentation is now fully compliant with MCP semantic conventions. List operations (\u003ccode\u003elist_tools\u003c/code\u003e, \u003ccode\u003elist_resources\u003c/code\u003e, \u003ccode\u003elist_prompts\u003c/code\u003e, \u003ccode\u003elist_resource_templates\u003c/code\u003e) are instrumented, and delegate spans on proxy servers are enriched with backend attributes.\u003c/p\u003e\n\u003ch2\u003eThread Affinity\u003c/h2\u003e\n\u003cp\u003eSync tools run in a thread pool by default. If your tool holds thread-local state or is bound to a specific thread (UI frameworks, some database drivers), you can now opt out:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/blob/main/docs/changelog.mdx\"\u003efastmcp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003chr /\u003e\n\u003ch2\u003etitle: \u0026quot;Changelog\u0026quot;\nicon: \u0026quot;list-check\u0026quot;\nrss: true\ntag: NEW\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.4.0\"\u003ev3.4.0: Remote Control\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFastMCP 3.4 is about reaching servers that live somewhere else. The headline is \u003ccode\u003efastmcp-remote\u003c/code\u003e, a standalone bridge that connects stdio-only MCP hosts to servers hosted over HTTP. Around it, the proxy layer those connections depend on is hardened: a proxy now forwards \u003ccode\u003einitialize\u003c/code\u003e upstream and fails loudly when the backend is missing or misconfigured, instead of reporting a connected-but-empty proxy. And FastMCP-issued access tokens can now outlive short-lived upstream tokens, so authenticated sessions survive the long idle periods remote clients are prone to.\u003c/p\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd fastmcp-remote bridge package by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4208\"\u003e#4208\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes ⚠️\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eForward proxy initialize as bridge behavior by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4228\"\u003e#4228\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eci: require external PRs to link a tracked issue by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4173\"\u003e#4173\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: new options --host and --no-log-panel | --log-panel  to cli dev apps by \u003ca href=\"https://github.com/itaru2622\"\u003e\u003ccode\u003e@​itaru2622\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4123\"\u003e#4123\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd valid_scopes and extra_authorize_params to WorkOSProvider by \u003ca href=\"https://github.com/tiagoskaneta\"\u003e\u003ccode\u003e@​tiagoskaneta\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4135\"\u003e#4135\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd token_expiry_threshold_seconds for proactive token refresh by \u003ca href=\"https://github.com/mohankumarelec\"\u003e\u003ccode\u003e@​mohankumarelec\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4142\"\u003e#4142\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd review-issue skill for triaging gated external contributions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4212\"\u003e#4212\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd contract gate to review-issue skill by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4214\"\u003e#4214\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLet ToolResult return an error result via is_error by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4217\"\u003e#4217\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate published docs after PyPI release by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4211\"\u003e#4211\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow pre-bound HTTP sockets by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4222\"\u003e#4222\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd targeted coverage tests by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4230\"\u003e#4230\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade ty to 0.0.39 by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4225\"\u003e#4225\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecouple FastMCP access token lifetime from upstream expires_in by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4254\"\u003e#4254\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity 🔒\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat(code-mode): default sandbox limits and per-execution tool-call cap by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4170\"\u003e#4170\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSecurity: Fix 3 findings in GitHub Actions workflows by \u003ca href=\"https://github.com/jpr5\"\u003e\u003ccode\u003e@​jpr5\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4183\"\u003e#4183\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd outbound comment guardrails by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4196\"\u003e#4196\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd uv dependency cooldown by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4213\"\u003e#4213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: VersionSpec eq matching normalizes versions and selects deterministically by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4058\"\u003e#4058\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(tests): hoist azure-identity import out of the OBO test timeout window by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4176\"\u003e#4176\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(auth): disambiguate auth-denied vs missing component messages by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4165\"\u003e#4165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: preserve annotations, meta, title, icons when creating resources from templates by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4061\"\u003e#4061\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: add OTEL spans to sampling step and tool execution by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4059\"\u003e#4059\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(config): read MCP config files as UTF-8 by \u003ca href=\"https://github.com/pragnyanramtha\"\u003e\u003ccode\u003e@​pragnyanramtha\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4164\"\u003e#4164\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(schema): preserve root metadata on fallback by \u003ca href=\"https://github.com/yuyua9\"\u003e\u003ccode\u003e@​yuyua9\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4178\"\u003e#4178\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(proxy): restore _current_server in _restore_request_context by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4168\"\u003e#4168\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(auth): add /.well-known/openid-configuration alias for OAuth server metadata by \u003ca href=\"https://github.com/shigechika\"\u003e\u003ccode\u003e@​shigechika\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4167\"\u003e#4167\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(code-mode): cancel Monty sandbox future on task cancellation by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4169\"\u003e#4169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(auth): unprefix Azure scopes echoed back to MCP clients by \u003ca href=\"https://github.com/rgillinlz\"\u003e\u003ccode\u003e@​rgillinlz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4130\"\u003e#4130\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): forward stateless flag in uv run path by \u003ca href=\"https://github.com/yuyua9\"\u003e\u003ccode\u003e@​yuyua9\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4177\"\u003e#4177\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(ci): scope minimize-reviews concurrency by event name by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4174\"\u003e#4174\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix docs app demo iframe assets by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4194\"\u003e#4194\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/d8dcc273cac9f6f17889a1b60adbdc654f948a50\"\u003e\u003ccode\u003ed8dcc27\u003c/code\u003e\u003c/a\u003e Decouple component imports from server (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4150\"\u003e#4150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/255e3e491082d8fbaeb3ccf25be6983cbab8b657\"\u003e\u003ccode\u003e255e3e4\u003c/code\u003e\u003c/a\u003e fix(docs): use valid FA icon on client-only package page (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4139\"\u003e#4139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/73df4dcaeeba6f985607f633786d38db6caf23f7\"\u003e\u003ccode\u003e73df4dc\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4096\"\u003e#4096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/ee48a0fd6e077e1c32e996f7b51fd442e31c514f\"\u003e\u003ccode\u003eee48a0f\u003c/code\u003e\u003c/a\u003e Refine fastmcp-slim packaging (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4125\"\u003e#4125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/bb4894d2159cd10f0c07f038db9c56b14fb99586\"\u003e\u003ccode\u003ebb4894d\u003c/code\u003e\u003c/a\u003e Add fastmcp-slim for client-only installs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4122\"\u003e#4122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/8209093871af25bc3ceb50bfbcec317632218afd\"\u003e\u003ccode\u003e8209093\u003c/code\u003e\u003c/a\u003e fix(http): terminate active streamable-HTTP transports before lifespan shutdo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/cf59a4511ff1980fd932215ef886e665c829bdbf\"\u003e\u003ccode\u003ecf59a45\u003c/code\u003e\u003c/a\u003e Fix OCI Provider issue in 3.x version. Add OCI auth provider example … (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4116\"\u003e#4116\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/89b99ecfb987781735295869d2e3d620dde7af4c\"\u003e\u003ccode\u003e89b99ec\u003c/code\u003e\u003c/a\u003e fix(proxy): fall back to live identifier for backend_* span attributes (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4109\"\u003e#4109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/310314cf149a18d0a76e5703ee98f80ffb035171\"\u003e\u003ccode\u003e310314c\u003c/code\u003e\u003c/a\u003e fix: cli option --no-banner is NOT passed to cli but server-spec in-correctly...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/28722f846a0319913a4a7b67dd65131d615214b6\"\u003e\u003ccode\u003e28722f8\u003c/code\u003e\u003c/a\u003e fix: drop exc_info for expected tool failures, remove unreachable ValidationE...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.2.4...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-asyncio` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/releases\"\u003epytest-asyncio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epytest-asyncio v1.4.0\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/tree/1.4.0\"\u003e1.4.0\u003c/a\u003e - 2026-05-26\u003c/h1\u003e\n\u003ch2\u003eDeprecated\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOverriding the \u003cem\u003eevent_loop_policy\u003c/em\u003e fixture is deprecated. Use the \u003ccode\u003epytest_asyncio_loop_factories\u003c/code\u003e hook instead. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1419\"\u003e#1419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003epytest_asyncio_loop_factories\u003c/code\u003e hook to parametrize asyncio tests with custom event loop factories.\u003c/p\u003e\n\u003cp\u003eThe hook returns a mapping of factory names to loop factories, and \u003ccode\u003epytest.mark.asyncio(loop_factories=[...])\u003c/code\u003e selects a subset of configured factories per test. When a single factory is configured, test names are unchanged.\u003c/p\u003e\n\u003cp\u003eSynchronous \u003ccode\u003e@pytest_asyncio.fixture\u003c/code\u003e functions now see the correct event loop when custom loop factories are configured, even when test code disrupts the current event loop (e.g., via \u003ccode\u003easyncio.run()\u003c/code\u003e or \u003ccode\u003easyncio.set_event_loop(None)\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1164\"\u003e#1164\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImproved the readability of the warning message that is displayed when \u003ccode\u003easyncio_default_fixture_loop_scope\u003c/code\u003e is unset (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOnly import \u003ccode\u003easyncio.AbstractEventLoopPolicy\u003c/code\u003e for type checking to avoid raising\na DeprecationWarning. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1394\"\u003e#1394\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated minimum supported pytest version to v8.4.0. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1397\"\u003e#1397\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a \u003ccode\u003eResourceWarning: unclosed event loop\u003c/code\u003e warning that could occur when a synchronous test called \u003ccode\u003easyncio.run()\u003c/code\u003e or otherwise unset the current event loop after pytest-asyncio had run an async test or fixture. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/724\"\u003e#724\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNotes for Downstream Packagers\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded dependency on \u003ccode\u003esphinx-tabs \u0026gt;= 3.5\u003c/code\u003e to organize documentation examples into tabs. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1395\"\u003e#1395\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epytest-asyncio v1.4.0a2\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/tree/1.4.0a2\"\u003e1.4.0a2\u003c/a\u003e - 2026-05-02\u003c/h1\u003e\n\u003ch2\u003eDeprecated\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOverriding the \u003cem\u003eevent_loop_policy\u003c/em\u003e fixture is deprecated. Use the \u003ccode\u003epytest_asyncio_loop_factories\u003c/code\u003e hook instead. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1419\"\u003e#1419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003epytest_asyncio_loop_factories\u003c/code\u003e hook to parametrize asyncio tests with custom event loop factories.\u003c/p\u003e\n\u003cp\u003eThe hook returns a mapping of factory names to loop factories, and \u003ccode\u003epytest.mark.asyncio(loop_factories=[...])\u003c/code\u003e selects a subset of configured factories per test. When a single factory is configured, test names are unchanged on pytest 8.4+.\u003c/p\u003e\n\u003cp\u003eSynchronous \u003ccode\u003e@pytest_asyncio.fixture\u003c/code\u003e functions now see the correct event loop when custom loop factories are configured, even when test code disrupts the current event loop (e.g., via \u003ccode\u003easyncio.run()\u003c/code\u003e or \u003ccode\u003easyncio.set_event_loop(None)\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1164\"\u003e#1164\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImproved the readability of the warning message that is displayed when \u003ccode\u003easyncio_default_fixture_loop_scope\u003c/code\u003e is unset (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOnly import \u003ccode\u003easyncio.AbstractEventLoopPolicy\u003c/code\u003e for type checking to avoid raising\na DeprecationWarning. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1394\"\u003e#1394\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/6e14cd2af9292dca1fa2b027a06bbc40b0e0e425\"\u003e\u003ccode\u003e6e14cd2\u003c/code\u003e\u003c/a\u003e chore: Prepare release of v1.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/4b900fb5d0c30949c574e55dd904ee179f858a5e\"\u003e\u003ccode\u003e4b900fb\u003c/code\u003e\u003c/a\u003e Build(deps): Bump codecov/codecov-action from 6.0.0 to 6.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/ab9f63245094865c42c940a34af724b0dec1debf\"\u003e\u003ccode\u003eab9f632\u003c/code\u003e\u003c/a\u003e Build(deps): Bump zipp from 3.23.1 to 4.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/a56fc77ecd59f781d8471b0f6a82bf58e08c95fa\"\u003e\u003ccode\u003ea56fc77\u003c/code\u003e\u003c/a\u003e Build(deps): Bump hypothesis from 6.152.6 to 6.152.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/e8bae9bc1f197731fc1a210c0da557af7b698e6d\"\u003e\u003ccode\u003ee8bae9b\u003c/code\u003e\u003c/a\u003e Build(deps): Bump requests from 2.34.0 to 2.34.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/fc433402c570fd36a7a227ef4bc3abd4579299de\"\u003e\u003ccode\u003efc43340\u003c/code\u003e\u003c/a\u003e Build(deps): Bump idna from 3.14 to 3.15\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/762eaf5033b798b965c92afdbb2cebefa8fc3a8b\"\u003e\u003ccode\u003e762eaf5\u003c/code\u003e\u003c/a\u003e Build(deps): Bump jaraco-functools from 4.4.0 to 4.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/b62e2228c80070977baf6b77ba89d5c148af920f\"\u003e\u003ccode\u003eb62e222\u003c/code\u003e\u003c/a\u003e Build(deps): Bump click from 8.3.3 to 8.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/919044700627889d25ca63b6e7a3bc785f3137eb\"\u003e\u003ccode\u003e9190447\u003c/code\u003e\u003c/a\u003e Build(deps): Bump pydantic from 2.13.3 to 2.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/82a393c5e31b6ebbbd8ec2a8dafc5f35b9cf1236\"\u003e\u003ccode\u003e82a393c\u003c/code\u003e\u003c/a\u003e ci: Remove unnecessary debug output.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/compare/v1.3.0...v1.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage[toml]` to 7.14.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/releases\"\u003ecoverage[toml]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.14.1\u003c/h2\u003e\n\u003ch2\u003eVersion 7.14.1 — 2026-05-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: the HTML report used typographic niceties to make file paths more readable by adding a small amount of space around slashes. Those spaces interfered with searching the page for file paths of interest. Now the report uses CSS to accomplish the same visual tweak so that searches with slashes work correctly. Closes \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2170\"\u003eissue 2170\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://mastodon.social/@hugovk/116588523571204490\"\u003eAdd a 3.16 PyPI classifier\u003c/a\u003e since we test on the 3.16 main branch.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.14.1\"\u003ecoverage 7.14.1\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.14.1\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage[toml]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.14.1 — 2026-05-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the HTML report used typographic niceties to make file paths more\nreadable by adding a small amount of space around slashes. Those spaces\ninterfered with searching the page for file paths of interest. Now the report\nuses CSS to accomplish the same visual tweak so that searches with slashes\nwork correctly. Closes \u003ccode\u003eissue 2170\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eAdd a 3.16 PyPI classifier \u0026lt;hugo-316_\u0026gt;\u003c/code\u003e_ since we test on the 3.16 main\nbranch.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2170: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2170\"\u003ecoveragepy/coveragepy#2170\u003c/a\u003e\n.. _hugo-316: \u003ca href=\"https://mastodon.social/@hugovk/116588523571204490\"\u003ehttps://mastodon.social/@​hugovk/116588523571204490\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-14-0:\u003c/p\u003e\n\u003ch2\u003eVersion 7.14.0 — 2026-05-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFeature: now when running one of the reporting commands, if there are\nparallel data files that need combining, they will be implicitly combined\nbefore creating the report. There is no option to avoid the combination; let\nus know if you have a use case that requires it.  Thanks, \u003ccode\u003eTim Hatch \u0026lt;pull 2162_\u0026gt;\u003c/code\u003e\u003cem\u003e. Closes \u003ccode\u003eissue 1781\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the output from \u003ccode\u003ecombine\u003c/code\u003e was too verbose, listing each file\nconsidered. Now it shows a single line with the counts of files combined,\nfiles skipped, and files with errors. The \u003ccode\u003e-q\u003c/code\u003e flag suppresses this line.\nThe old detailed lines are available with the new \u003ccode\u003e--debug=combine\u003c/code\u003e option.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: running a Python file through a symlink now sets the sys.path correctly,\nmatching regular Python behavior. Fixes \u003ccode\u003eissue 2157\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eCollector.flush_data\u003c/code\u003e could fail with \u0026quot;RuntimeError: Set changed\nsize during iteration\u0026quot; when a tracer in another thread added a line to the\nper-file set that \u003ccode\u003eadd_lines\u003c/code\u003e (or \u003ccode\u003eadd_arcs\u003c/code\u003e) was iterating. The values\npassed to \u003ccode\u003eCoverageData\u003c/code\u003e are now snapshotted via \u003ccode\u003edict.copy()\u003c/code\u003e and\n\u003ccode\u003eset.copy()\u003c/code\u003e, which are atomic under the GIL. Thanks, \u003ccode\u003eAlex Vandiver \u0026lt;pull 2165_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the soft keyword \u003ccode\u003elazy\u003c/code\u003e is now bolded in HTML reports.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWe are no longer testing eventlet support. Eventlet started issuing stern\ndeprecation warnings that break our tests. Our support code is still there.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1781: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1781\"\u003ecoveragepy/coveragepy#1781\u003c/a\u003e\n.. _issue 2157: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2157\"\u003ecoveragepy/coveragepy#2157\u003c/a\u003e\n.. _pull 2162: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2162\"\u003ecoveragepy/coveragepy#2162\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/64d9b66fd852c1920ffe6cb8b58d7e4fdae90226\"\u003e\u003ccode\u003e64d9b66\u003c/code\u003e\u003c/a\u003e docs: correct the date for 7.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/6fa7dd44c25e1a660252faaf030dd8f2f1e20861\"\u003e\u003ccode\u003e6fa7dd4\u003c/code\u003e\u003c/a\u003e chore: bump actions/dependency-review-action (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2181\"\u003e#2181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/078afae263597b004eb9a85d880b6a65008e75ed\"\u003e\u003ccode\u003e078afae\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/cb4f028a36e008b664739d04f387b90ee5105044\"\u003e\u003ccode\u003ecb4f028\u003c/code\u003e\u003c/a\u003e docs: prep for 7.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/ae2d09f562271c6169534e1c242d015dd0823dda\"\u003e\u003ccode\u003eae2d09f\u003c/code\u003e\u003c/a\u003e Merge branch 'nedbat/classifire-316-kits'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2c3568b2e041f2c0dbbc8eaa3919d46ee891b743\"\u003e\u003ccode\u003e2c3568b\u003c/code\u003e\u003c/a\u003e build: declare 3.16 compatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/faa68f8601cf098701b68976dbb73b9fc23c9297\"\u003e\u003ccode\u003efaa68f8\u003c/code\u003e\u003c/a\u003e chore: bump github/codeql-action in the action-dependencies group (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2173\"\u003e#2173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/eb55feedf54b363e3d0b678f20abf3bfd3551a88\"\u003e\u003ccode\u003eeb55fee\u003c/code\u003e\u003c/a\u003e test: we don't need PyPy \u0026lt; 7.3.22 anymore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/ac168fe53c04cdb2ff5231c0c4e5045021ee339b\"\u003e\u003ccode\u003eac168fe\u003c/code\u003e\u003c/a\u003e test: the text summary should show missing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/fed4bd2db3c1cb2916a07791041da693fbf8e996\"\u003e\u003ccode\u003efed4bd2\u003c/code\u003e\u003c/a\u003e chore: upgrade virtualenv\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.5...7.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.11 to 0.15.14\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.14\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-21.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003eairflow-task-implicit-multiple-outputs\u003c/code\u003e (\u003ccode\u003eAIR202\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25152\"\u003e#25152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-use-pathlib\u003c/code\u003e] Mark \u003ccode\u003ePTH101\u003c/code\u003e fix as unsafe when first argument is a class attribute annotated as \u003ccode\u003eint\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25086\"\u003e#25086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Implement \u003ccode\u003etoo-many-try-statements\u003c/code\u003e (\u003ccode\u003eW0717\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23970\"\u003e#23970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add \u003ccode\u003eincorrect-decorator-order\u003c/code\u003e (\u003ccode\u003eRUF074\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23461\"\u003e#23461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add \u003ccode\u003efallible-context-manager\u003c/code\u003e (\u003ccode\u003eRUF075\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22844\"\u003e#22844\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix lambda formatting in interpolated string expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25144\"\u003e#25144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat generic \u003ccode\u003efrozenset\u003c/code\u003e annotations as immutable (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25251\"\u003e#25251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Avoid \u003ccode\u003estrict\u003c/code\u003e behavior when \u003ccode\u003efuture-annotations\u003c/code\u003e are enabled (\u003ccode\u003eTC001\u003c/code\u003e, \u003ccode\u003eTC002\u003c/code\u003e, \u003ccode\u003eTC003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25035\"\u003e#25035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Avoid false positives in \u003ccode\u003eelse\u003c/code\u003e clause (\u003ccode\u003ePLR1733\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25177\"\u003e#25177\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Skip \u003ccode\u003eC417\u003c/code\u003e for lambdas with positional-only parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25272\"\u003e#25272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Preserve f-string source verbatim in \u003ccode\u003eSIM101\u003c/code\u003e fix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25061\"\u003e#25061\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid unnecessary parser lookahead for operators (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25290\"\u003e#25290\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate code example setting Neovim LSP log level (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25284\"\u003e#25284\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd full PEP 798 support (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25104\"\u003e#25104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a parser recursion limit (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24810\"\u003e#24810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate various \u003ccode\u003eruff_python_stdlib\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25273\"\u003e#25273\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ocaballeror\"\u003e\u003ccode\u003e@​ocaballeror\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lerebear\"\u003e\u003ccode\u003e@​lerebear\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin\"\u003e\u003ccode\u003e@​samuelcolvin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/baltasarblanco\"\u003e\u003ccode\u003e@​baltasarblanco\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aconal-com\"\u003e\u003ccode\u003e@​aconal-com\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JelleZijlstra\"\u003e\u003ccode\u003e@​JelleZijlstra\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.14\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-21.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003eairflow-task-implicit-multiple-outputs\u003c/code\u003e (\u003ccode\u003eAIR202\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25152\"\u003e#25152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-use-pathlib\u003c/code\u003e] Mark \u003ccode\u003ePTH101\u003c/code\u003e fix as unsafe when first argument is a class attribute annotated as \u003ccode\u003eint\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25086\"\u003e#25086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Implement \u003ccode\u003etoo-many-try-statements\u003c/code\u003e (\u003ccode\u003eW0717\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23970\"\u003e#23970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add \u003ccode\u003eincorrect-decorator-order\u003c/code\u003e (\u003ccode\u003eRUF074\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23461\"\u003e#23461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add \u003ccode\u003efallible-context-manager\u003c/code\u003e (\u003ccode\u003eRUF075\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22844\"\u003e#22844\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix lambda formatting in interpolated string expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25144\"\u003e#25144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat generic \u003ccode\u003efrozenset\u003c/code\u003e annotations as immutable (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25251\"\u003e#25251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Avoid \u003ccode\u003estrict\u003c/code\u003e behavior when \u003ccode\u003efuture-annotations\u003c/code\u003e are enabled (\u003ccode\u003eTC001\u003c/code\u003e, \u003ccode\u003eTC002\u003c/code\u003e, \u003ccode\u003eTC003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25035\"\u003e#25035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Avoid false positives in \u003ccode\u003eelse\u003c/code\u003e clause (\u003ccode\u003ePLR1733\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25177\"\u003e#25177\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Skip \u003ccode\u003eC417\u003c/code\u003e for lambdas with positional-only parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25272\"\u003e#25272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Preserve f-string source verbatim in \u003ccode\u003eSIM101\u003c/code\u003e fix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25061\"\u003e#25061\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid unnecessary parser lookahead for operators (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25290\"\u003e#25290\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate code example setting Neovim LSP log level (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25284\"\u003e#25284\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd full PEP 798 support (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25104\"\u003e#25104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a parser recursion limit (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24810\"\u003e#24810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate various \u003ccode\u003eruff_python_stdlib\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25273\"\u003e#25273\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ocaballeror\"\u003e\u003ccode\u003e@​ocaballeror\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lerebear\"\u003e\u003ccode\u003e@​lerebear\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin\"\u003e\u003ccode\u003e@​samuelcolvin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/baltasarblanco\"\u003e\u003ccode\u003e@​baltasarblanco\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aconal-com\"\u003e\u003ccode\u003e@​aconal-com\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JelleZijlstra\"\u003e\u003ccode\u003e@​JelleZijlstra\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adityasingh2400\"\u003e\u003ccode\u003e@​adityasingh2400\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9ad2da3015e5faf73bdc5f1d09df3e47238e3edf\"\u003e\u003ccode\u003e9ad2da3\u003c/code\u003e\u003c/a\u003e Bump 0.15.14 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25295\"\u003e#25295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/c714e84952510696c05ec21b0158a3548898f594\"\u003e\u003ccode\u003ec714e84\u003c/code\u003e\u003c/a\u003e [ty] Modernize setup of union types in mdtests (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25291\"\u003e#25291\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/8a8e35ebfe318e2467a0f276e5d1a3a9032a55ad\"\u003e\u003ccode\u003e8a8e35e\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Skip \u003ccode\u003eC417\u003c/code\u003e for lambdas with positional-only parame...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/aea5ed4d278017057c2e842c6c3a2e92ad71495f\"\u003e\u003ccode\u003eaea5ed4\u003c/code\u003e\u003c/a\u003e Avoid unnecessary parser lookahead for operators (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25290\"\u003e#25290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e9d72bb420f26c23e6660bfce4dfa0028b931bff\"\u003e\u003ccode\u003ee9d72bb\u003c/code\u003e\u003c/a\u003e [ty] Allow enum member accesses on \u003ccode\u003eself\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25077\"\u003e#25077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/6cbd59b511a92d5f408db57bde33367c0d47b672\"\u003e\u003ccode\u003e6cbd59b\u003c/code\u003e\u003c/a\u003e Set \u003ccode\u003eexclude-newer = \u0026quot;7 days\u0026quot;\u003c/code\u003e in our PEP-723 scripts (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25285\"\u003e#25285\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9999a3967ae28fe3295131e8883b6947f272a076\"\u003e\u003ccode\u003e9999a39\u003c/code\u003e\u003c/a\u003e Update code example on how to update Neovim LSP log level (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25284\"\u003e#25284\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/67d8c544f0d1c526a2fc60d4bb1358fd7956d178\"\u003e\u003ccode\u003e67d8c54\u003c/code\u003e\u003c/a\u003e [ty] Retain recursively-defined state in binary expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25277\"\u003e#25277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/25a3191140dc0467f9d196f35c128fefde269261\"\u003e\u003ccode\u003e25a3191\u003c/code\u003e\u003c/a\u003e [ty] Refine Callable class-decorator fallback for unknown results (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25250\"\u003e#25250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/c423054dc09e5b644c926b6b527b6accfbe693e9\"\u003e\u003ccode\u003ec423054\u003c/code\u003e\u003c/a\u003e Add a recursion limit to the parser (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24810\"\u003e#24810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.11...0.15.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.20.2 to 2.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eMypy Release Notes\u003c/h1\u003e\n\u003ch2\u003eNext Release\u003c/h2\u003e\n\u003ch2\u003eMypy 2.1\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 2.1.0 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\nimprovements and bug fixes. You can install it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install -U mypy\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can read the full documentation for this release on \u003ca href=\"http://mypy.readthedocs.io\"\u003eRead the Docs\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003elibrt.vecs: Fast Growable Array Type for Mypyc\u003c/h3\u003e\n\u003cp\u003eThe new \u003ccode\u003elibrt.vecs\u003c/code\u003e module provides an efficient growable array type \u003ccode\u003evec\u003c/code\u003e that is\noptimized for mypyc use. It provides fast, packed arrays with integer and floating point\nvalue types, which can be \u003cstrong\u003eseveral times faster\u003c/strong\u003e than \u003ccode\u003elist\u003c/code\u003e, and tens of times faster\nthan \u003ccode\u003earray.array\u003c/code\u003e in code compiled using mypyc. It also supports nested \u003ccode\u003evec\u003c/code\u003e objects and\nnon-value-type items, such as \u003ccode\u003evec[vec[str]]\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eRefer to the \u003ca href=\"https://mypyc.readthedocs.io/en/latest/librt_vecs.html\"\u003edocumentation\u003c/a\u003e for\nthe details.\u003c/p\u003e\n\u003cp\u003eContributed by Jukka Lehtosalo.\u003c/p\u003e\n\u003ch3\u003elibrt.random: Fast Pseudo-Random Number Generation\u003c/h3\u003e\n\u003cp\u003eThe new \u003ccode\u003elibrt.random\u003c/code\u003e module provides fast pseudo-random number generation that is\noptimized for code compiled using mypyc. It can be 3x to 10x faster than the stdlib\n\u003ccode\u003erandom\u003c/code\u003e module in compiled code.\u003c/p\u003e\n\u003cp\u003eRefer to the \u003ca href=\"https://mypyc.readthedocs.io/en/latest/librt_random.html\"\u003edocumentation\u003c/a\u003e for\nthe details.\u003c/p\u003e\n\u003cp\u003eContributed by Jukka Lehtosalo (PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21433\"\u003e21433\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003eMypyc Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnable incremental self-compilation (Vaggelis Danias, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21369\"\u003e21369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake compilation order with multiple files consistent (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21419\"\u003e21419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on accessing \u003ccode\u003eStopAsyncIteration\u003c/code\u003e (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21406\"\u003e21406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix incremental compilation with \u003ccode\u003eseparate\u003c/code\u003e flag (Vaggelis Danias, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21299\"\u003e21299\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes to Crashes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash on partial type with \u003ccode\u003e--allow-redefinition\u003c/code\u003e and \u003ccode\u003eglobal\u003c/code\u003e declaration (Jukka Lehtosalo, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21428\"\u003e21428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix broken awaitable generator patching (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21435\"\u003e21435\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c1c336d7e34eb313080c79b156518c58d27c7234\"\u003e\u003ccode\u003ec1c336d\u003c/code\u003e\u003c/a\u003e Remove +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/74d...\n\n_Description has been truncated_","html_url":"https://github.com/securityscout/securityscout/pull/74","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/securityscout%2Fsecurityscout/issues/74","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/74/packages"},{"uuid":"4559923178","node_id":"PR_kwDOStcgxc7hM0BA","number":1,"state":"closed","title":"chore(deps): bump fastmcp from 2.13.0.2 to 3.3.1","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-04T02:33:44.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-01T02:39:06.000Z","updated_at":"2026-06-04T02:33:45.000Z","time_to_close":258878,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"fastmcp","old_version":"2.13.0.2","new_version":"3.3.1","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":null,"ecosystem":"pip"},"body":"Bumps [fastmcp](https://github.com/PrefectHQ/fastmcp) from 2.13.0.2 to 3.3.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1: Loop There It Is\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3.1 is a hotfix for the 3.3 packaging split. Clean installs of 3.3.0 could fail on standalone component imports like \u003ccode\u003efrom fastmcp.tools import tool\u003c/code\u003e because component modules reached auth and task primitives through \u003ccode\u003efastmcp.server\u003c/code\u003e, pulling in the server/provider stack and exposing a circular import.\u003c/p\u003e\n\u003cp\u003eComponent-level auth and task primitives now live in lightweight utility modules, with the old server import paths preserved as compatibility re-exports. Component imports stay lightweight, existing server-facing imports continue to work, and the release also includes small docs corrections from the 3.3 rollout.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(docs): use valid FA icon on client-only package page by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4139\"\u003ePrefectHQ/fastmcp#4139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecouple component imports from server by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4150\"\u003ePrefectHQ/fastmcp#4150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.3.0: Slim Reaper\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3 ships \u003ccode\u003efastmcp-slim\u003c/code\u003e, a new lightweight distribution that separates the client from the server stack. It also closes out a meaningful backlog of security hardening, observability improvements, and auth additions that accumulated through the 3.2 cycle.\u003c/p\u003e\n\u003ch2\u003efastmcp-slim\u003c/h2\u003e\n\u003cp\u003eThe full FastMCP package pulls in Starlette, Uvicorn, and the rest of the server machinery — necessary for running a server, but wasteful if you're writing a client, a script, or an agent that just needs to talk to MCP. \u003ccode\u003efastmcp-slim\u003c/code\u003e is a dependency-light distribution that ships the client and transport layer without any of that.\u003c/p\u003e\n\u003cp\u003eThe import namespace is unchanged:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom fastmcp import Client\n\u003cp\u003easync with Client(\u0026quot;\u003ca href=\"https://example.com/mcp\"\u003ehttps://example.com/mcp\u003c/a\u003e\u0026quot;) as client:\nresult = await client.call_tool(\u0026quot;my_tool\u0026quot;, {\u0026quot;arg\u0026quot;: \u0026quot;value\u0026quot;})\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eInstall \u003ccode\u003efastmcp-slim[client]\u003c/code\u003e anywhere you want FastMCP's client without the server footprint — CI environments, lightweight agents, library dependencies that shouldn't force Uvicorn on downstream users.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003eThe OAuth proxy received three hardening upgrades. Silent consent is now guarded against AS-in-the-middle attacks — a malicious authorization server can no longer silently approve a consent it wasn't meant to handle. Redirect URI allowlist matching now rejects dot-segment paths (\u003ccode\u003e/../\u003c/code\u003e, \u003ccode\u003e/./\u003c/code\u003e) that could otherwise bypass prefix checks. And \u003ccode\u003eResponseCachingMiddleware\u003c/code\u003e partitions its cache by access token, closing a gap where different users could see each other's cached responses.\u003c/p\u003e\n\u003ch2\u003eAuth\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eAzureB2CProvider\u003c/code\u003e adds first-class support for Azure AD B2C user flows. The OCI provider is fixed for 3.x installs. And \u003ccode\u003eOAuthProxy\u003c/code\u003e gains a public \u003ccode\u003eupdate_scopes()\u003c/code\u003e API for updating the proxy's required scopes after initialization — useful for servers that determine scope requirements at runtime.\u003c/p\u003e\n\u003ch2\u003eObservability\u003c/h2\u003e\n\u003cp\u003eOTEL instrumentation is now fully compliant with MCP semantic conventions. List operations (\u003ccode\u003elist_tools\u003c/code\u003e, \u003ccode\u003elist_resources\u003c/code\u003e, \u003ccode\u003elist_prompts\u003c/code\u003e, \u003ccode\u003elist_resource_templates\u003c/code\u003e) are instrumented, and delegate spans on proxy servers are enriched with backend attributes.\u003c/p\u003e\n\u003ch2\u003eThread Affinity\u003c/h2\u003e\n\u003cp\u003eSync tools run in a thread pool by default. If your tool holds thread-local state or is bound to a specific thread (UI frameworks, some database drivers), you can now opt out:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/blob/main/docs/changelog.mdx\"\u003efastmcp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003chr /\u003e\n\u003ch2\u003etitle: \u0026quot;Changelog\u0026quot;\nicon: \u0026quot;list-check\u0026quot;\nrss: true\ntag: NEW\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.1\"\u003ev3.1.1: 'Tis But a Patch\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ePins \u003ccode\u003epydantic-monty\u003c/code\u003e below 0.0.8 to fix a breaking change in Monty that affects code mode. Monty 0.0.8 removed the \u003ccode\u003eexternal_functions\u003c/code\u003e constructor parameter, causing \u003ccode\u003eMontySandboxProvider\u003c/code\u003e to fail. This patch caps the version so existing installs work correctly.\u003c/p\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePin pydantic-monty below 0.0.8 to fix code mode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3497\"\u003e#3497\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.1.0...v3.1.1\"\u003ev3.1.0...v3.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.0\"\u003ev3.1.0: Code to Joy\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFastMCP 3.1 is the Code Mode release. The 3.0 architecture introduced providers and transforms as the extensibility layer — 3.1 puts that architecture to work, shipping the most requested capability since launch: servers that can find and execute code on behalf of agents, without requiring clients to know what tools exist.\u003c/p\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Search transforms for tool discovery by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3154\"\u003e#3154\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd experimental CodeMode transform by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3297\"\u003e#3297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Prefab Apps integration for MCP tool UIs by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3316\"\u003e#3316\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLazy-load heavy imports to reduce import time by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3295\"\u003e#3295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd http_client parameter to all token verifiers for connection pooling by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3300\"\u003e#3300\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd in-memory caching for token introspection results by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3298\"\u003e#3298\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SessionStart hook to install gh CLI in cloud sessions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3308\"\u003e#3308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty 0.0.19 type errors by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3310\"\u003e#3310\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCode Mode: Add resource limits to MontySandboxProvider by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3326\"\u003e#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept transforms as FastMCP init kwarg by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3324\"\u003e#3324\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSplit large test files to comply with loq line limit by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd -m/--module flag to \u003ccode\u003efastmcp run\u003c/code\u003e and \u003ccode\u003edev inspector\u003c/code\u003e by \u003ca href=\"https://github.com/dgenio\"\u003e\u003ccode\u003e@​dgenio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3331\"\u003e#3331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd search_result_serializer hook and serialize_tools_for_output_markdown by \u003ca href=\"https://github.com/MagnusS0\"\u003e\u003ccode\u003e@​MagnusS0\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3337\"\u003e#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd MultiAuth for composing multiple token verification sources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3335\"\u003e#3335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdds PropelAuth as an AuthProvider by \u003ca href=\"https://github.com/andrew-propelauth\"\u003e\u003ccode\u003e@​andrew-propelauth\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3358\"\u003e#3358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace vendored DI with uncalled-for by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3301\"\u003e#3301\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecompose CodeMode into composable discovery tools by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3354\"\u003e#3354\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(contrib): auto-sync MCPMixin decorators with from_function signatures by \u003ca href=\"https://github.com/AnkeshThakur\"\u003e\u003ccode\u003e@​AnkeshThakur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3323\"\u003e#3323\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Google GenAI Sampling Handler by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/2977\"\u003e#2977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ListTools, search limit, and catalog size annotation to CodeMode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3359\"\u003e#3359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow configuring FastMCP transport setting in the same way as other configuration by \u003ca href=\"https://github.com/jvdmr\"\u003e\u003ccode\u003e@​jvdmr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1796\"\u003e#1796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd include_unversioned option to VersionFilter by \u003ca href=\"https://github.com/yangbaechu\"\u003e\u003ccode\u003e@​yangbaechu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3349\"\u003e#3349\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/d8dcc273cac9f6f17889a1b60adbdc654f948a50\"\u003e\u003ccode\u003ed8dcc27\u003c/code\u003e\u003c/a\u003e Decouple component imports from server (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4150\"\u003e#4150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/255e3e491082d8fbaeb3ccf25be6983cbab8b657\"\u003e\u003ccode\u003e255e3e4\u003c/code\u003e\u003c/a\u003e fix(docs): use valid FA icon on client-only package page (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4139\"\u003e#4139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/73df4dcaeeba6f985607f633786d38db6caf23f7\"\u003e\u003ccode\u003e73df4dc\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4096\"\u003e#4096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/ee48a0fd6e077e1c32e996f7b51fd442e31c514f\"\u003e\u003ccode\u003eee48a0f\u003c/code\u003e\u003c/a\u003e Refine fastmcp-slim packaging (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4125\"\u003e#4125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/bb4894d2159cd10f0c07f038db9c56b14fb99586\"\u003e\u003ccode\u003ebb4894d\u003c/code\u003e\u003c/a\u003e Add fastmcp-slim for client-only installs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4122\"\u003e#4122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/8209093871af25bc3ceb50bfbcec317632218afd\"\u003e\u003ccode\u003e8209093\u003c/code\u003e\u003c/a\u003e fix(http): terminate active streamable-HTTP transports before lifespan shutdo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/cf59a4511ff1980fd932215ef886e665c829bdbf\"\u003e\u003ccode\u003ecf59a45\u003c/code\u003e\u003c/a\u003e Fix OCI Provider issue in 3.x version. Add OCI auth provider example … (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4116\"\u003e#4116\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/89b99ecfb987781735295869d2e3d620dde7af4c\"\u003e\u003ccode\u003e89b99ec\u003c/code\u003e\u003c/a\u003e fix(proxy): fall back to live identifier for backend_* span attributes (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4109\"\u003e#4109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/310314cf149a18d0a76e5703ee98f80ffb035171\"\u003e\u003ccode\u003e310314c\u003c/code\u003e\u003c/a\u003e fix: cli option --no-banner is NOT passed to cli but server-spec in-correctly...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/28722f846a0319913a4a7b67dd65131d615214b6\"\u003e\u003ccode\u003e28722f8\u003c/code\u003e\u003c/a\u003e fix: drop exc_info for expected tool failures, remove unreachable ValidationE...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v2.13.0.2...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=fastmcp\u0026package-manager=uv\u0026previous-version=2.13.0.2\u0026new-version=3.3.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/goal31121/MCPKubernetesServer/pull/1","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/goal31121%2FMCPKubernetesServer/issues/1","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1/packages"},{"uuid":"4513329288","node_id":"PR_kwDOSmqlzM7e2_LA","number":6,"state":"open","title":"chore(deps): update fastmcp requirement from \u003c3.0,\u003e=2.0 to \u003e=2.0,\u003c4.0","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-24T23:42:35.000Z","updated_at":"2026-05-24T23:42:36.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): update","packages":[{"name":"fastmcp","old_version":"\u003c3.0,\u003e=2.0","new_version":"\u003e=2.0,\u003c4.0","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [fastmcp](https://github.com/PrefectHQ/fastmcp) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1: Loop There It Is\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3.1 is a hotfix for the 3.3 packaging split. Clean installs of 3.3.0 could fail on standalone component imports like \u003ccode\u003efrom fastmcp.tools import tool\u003c/code\u003e because component modules reached auth and task primitives through \u003ccode\u003efastmcp.server\u003c/code\u003e, pulling in the server/provider stack and exposing a circular import.\u003c/p\u003e\n\u003cp\u003eComponent-level auth and task primitives now live in lightweight utility modules, with the old server import paths preserved as compatibility re-exports. Component imports stay lightweight, existing server-facing imports continue to work, and the release also includes small docs corrections from the 3.3 rollout.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(docs): use valid FA icon on client-only package page by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4139\"\u003ePrefectHQ/fastmcp#4139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecouple component imports from server by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4150\"\u003ePrefectHQ/fastmcp#4150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/blob/main/docs/changelog.mdx\"\u003efastmcp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003chr /\u003e\n\u003ch2\u003etitle: \u0026quot;Changelog\u0026quot;\nicon: \u0026quot;list-check\u0026quot;\nrss: true\ntag: NEW\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.1\"\u003ev3.1.1: 'Tis But a Patch\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ePins \u003ccode\u003epydantic-monty\u003c/code\u003e below 0.0.8 to fix a breaking change in Monty that affects code mode. Monty 0.0.8 removed the \u003ccode\u003eexternal_functions\u003c/code\u003e constructor parameter, causing \u003ccode\u003eMontySandboxProvider\u003c/code\u003e to fail. This patch caps the version so existing installs work correctly.\u003c/p\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePin pydantic-monty below 0.0.8 to fix code mode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3497\"\u003e#3497\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.1.0...v3.1.1\"\u003ev3.1.0...v3.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.0\"\u003ev3.1.0: Code to Joy\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFastMCP 3.1 is the Code Mode release. The 3.0 architecture introduced providers and transforms as the extensibility layer — 3.1 puts that architecture to work, shipping the most requested capability since launch: servers that can find and execute code on behalf of agents, without requiring clients to know what tools exist.\u003c/p\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Search transforms for tool discovery by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3154\"\u003e#3154\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd experimental CodeMode transform by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3297\"\u003e#3297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Prefab Apps integration for MCP tool UIs by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3316\"\u003e#3316\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLazy-load heavy imports to reduce import time by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3295\"\u003e#3295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd http_client parameter to all token verifiers for connection pooling by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3300\"\u003e#3300\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd in-memory caching for token introspection results by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3298\"\u003e#3298\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SessionStart hook to install gh CLI in cloud sessions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3308\"\u003e#3308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty 0.0.19 type errors by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3310\"\u003e#3310\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCode Mode: Add resource limits to MontySandboxProvider by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3326\"\u003e#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept transforms as FastMCP init kwarg by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3324\"\u003e#3324\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSplit large test files to comply with loq line limit by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd -m/--module flag to \u003ccode\u003efastmcp run\u003c/code\u003e and \u003ccode\u003edev inspector\u003c/code\u003e by \u003ca href=\"https://github.com/dgenio\"\u003e\u003ccode\u003e@​dgenio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3331\"\u003e#3331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd search_result_serializer hook and serialize_tools_for_output_markdown by \u003ca href=\"https://github.com/MagnusS0\"\u003e\u003ccode\u003e@​MagnusS0\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3337\"\u003e#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd MultiAuth for composing multiple token verification sources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3335\"\u003e#3335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdds PropelAuth as an AuthProvider by \u003ca href=\"https://github.com/andrew-propelauth\"\u003e\u003ccode\u003e@​andrew-propelauth\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3358\"\u003e#3358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace vendored DI with uncalled-for by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3301\"\u003e#3301\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecompose CodeMode into composable discovery tools by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3354\"\u003e#3354\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(contrib): auto-sync MCPMixin decorators with from_function signatures by \u003ca href=\"https://github.com/AnkeshThakur\"\u003e\u003ccode\u003e@​AnkeshThakur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3323\"\u003e#3323\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Google GenAI Sampling Handler by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/2977\"\u003e#2977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ListTools, search limit, and catalog size annotation to CodeMode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3359\"\u003e#3359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow configuring FastMCP transport setting in the same way as other configuration by \u003ca href=\"https://github.com/jvdmr\"\u003e\u003ccode\u003e@​jvdmr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1796\"\u003e#1796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd include_unversioned option to VersionFilter by \u003ca href=\"https://github.com/yangbaechu\"\u003e\u003ccode\u003e@​yangbaechu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3349\"\u003e#3349\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/d8dcc273cac9f6f17889a1b60adbdc654f948a50\"\u003e\u003ccode\u003ed8dcc27\u003c/code\u003e\u003c/a\u003e Decouple component imports from server (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4150\"\u003e#4150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/255e3e491082d8fbaeb3ccf25be6983cbab8b657\"\u003e\u003ccode\u003e255e3e4\u003c/code\u003e\u003c/a\u003e fix(docs): use valid FA icon on client-only package page (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4139\"\u003e#4139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/73df4dcaeeba6f985607f633786d38db6caf23f7\"\u003e\u003ccode\u003e73df4dc\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4096\"\u003e#4096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/ee48a0fd6e077e1c32e996f7b51fd442e31c514f\"\u003e\u003ccode\u003eee48a0f\u003c/code\u003e\u003c/a\u003e Refine fastmcp-slim packaging (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4125\"\u003e#4125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/bb4894d2159cd10f0c07f038db9c56b14fb99586\"\u003e\u003ccode\u003ebb4894d\u003c/code\u003e\u003c/a\u003e Add fastmcp-slim for client-only installs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4122\"\u003e#4122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/8209093871af25bc3ceb50bfbcec317632218afd\"\u003e\u003ccode\u003e8209093\u003c/code\u003e\u003c/a\u003e fix(http): terminate active streamable-HTTP transports before lifespan shutdo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/cf59a4511ff1980fd932215ef886e665c829bdbf\"\u003e\u003ccode\u003ecf59a45\u003c/code\u003e\u003c/a\u003e Fix OCI Provider issue in 3.x version. Add OCI auth provider example … (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4116\"\u003e#4116\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/89b99ecfb987781735295869d2e3d620dde7af4c\"\u003e\u003ccode\u003e89b99ec\u003c/code\u003e\u003c/a\u003e fix(proxy): fall back to live identifier for backend_* span attributes (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4109\"\u003e#4109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/310314cf149a18d0a76e5703ee98f80ffb035171\"\u003e\u003ccode\u003e310314c\u003c/code\u003e\u003c/a\u003e fix: cli option --no-banner is NOT passed to cli but server-spec in-correctly...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/28722f846a0319913a4a7b67dd65131d615214b6\"\u003e\u003ccode\u003e28722f8\u003c/code\u003e\u003c/a\u003e fix: drop exc_info for expected tool failures, remove unreachable ValidationE...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v2.0.0...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/m2moiz/verify-kit/pull/6","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/m2moiz%2Fverify-kit/issues/6","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/6/packages"},{"uuid":"4506495666","node_id":"PR_kwDOSlXC9c7eie61","number":4,"state":"open","title":"deps(deps): bump the python-minor-patch group across 1 directory with 5 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-23T02:05:40.000Z","updated_at":"2026-05-23T02:22:51.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps): bump","group_name":"python-minor-patch","update_count":5,"packages":[{"name":"fastmcp","old_version":"3.2.0","new_version":"3.3.1","repository_url":"https://github.com/PrefectHQ/fastmcp"},{"name":"mcp","old_version":"1.26.0","new_version":"1.27.1","repository_url":"https://github.com/modelcontextprotocol/python-sdk"},{"name":"prefab-ui","old_version":"0.18.2","new_version":"0.19.2","repository_url":"https://github.com/PrefectHQ/prefab"},{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"ruff","old_version":"0.15.2","new_version":"0.15.14","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 5 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastmcp](https://github.com/PrefectHQ/fastmcp) | `3.2.0` | `3.3.1` |\n| [mcp](https://github.com/modelcontextprotocol/python-sdk) | `1.26.0` | `1.27.1` |\n| [prefab-ui](https://github.com/PrefectHQ/prefab) | `0.18.2` | `0.19.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.4` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.2` | `0.15.14` |\n\n\nUpdates `fastmcp` from 3.2.0 to 3.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1: Loop There It Is\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3.1 is a hotfix for the 3.3 packaging split. Clean installs of 3.3.0 could fail on standalone component imports like \u003ccode\u003efrom fastmcp.tools import tool\u003c/code\u003e because component modules reached auth and task primitives through \u003ccode\u003efastmcp.server\u003c/code\u003e, pulling in the server/provider stack and exposing a circular import.\u003c/p\u003e\n\u003cp\u003eComponent-level auth and task primitives now live in lightweight utility modules, with the old server import paths preserved as compatibility re-exports. Component imports stay lightweight, existing server-facing imports continue to work, and the release also includes small docs corrections from the 3.3 rollout.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(docs): use valid FA icon on client-only package page by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4139\"\u003ePrefectHQ/fastmcp#4139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecouple component imports from server by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4150\"\u003ePrefectHQ/fastmcp#4150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.3.0: Slim Reaper\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3 ships \u003ccode\u003efastmcp-slim\u003c/code\u003e, a new lightweight distribution that separates the client from the server stack. It also closes out a meaningful backlog of security hardening, observability improvements, and auth additions that accumulated through the 3.2 cycle.\u003c/p\u003e\n\u003ch2\u003efastmcp-slim\u003c/h2\u003e\n\u003cp\u003eThe full FastMCP package pulls in Starlette, Uvicorn, and the rest of the server machinery — necessary for running a server, but wasteful if you're writing a client, a script, or an agent that just needs to talk to MCP. \u003ccode\u003efastmcp-slim\u003c/code\u003e is a dependency-light distribution that ships the client and transport layer without any of that.\u003c/p\u003e\n\u003cp\u003eThe import namespace is unchanged:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom fastmcp import Client\n\u003cp\u003easync with Client(\u0026quot;\u003ca href=\"https://example.com/mcp\"\u003ehttps://example.com/mcp\u003c/a\u003e\u0026quot;) as client:\nresult = await client.call_tool(\u0026quot;my_tool\u0026quot;, {\u0026quot;arg\u0026quot;: \u0026quot;value\u0026quot;})\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eInstall \u003ccode\u003efastmcp-slim[client]\u003c/code\u003e anywhere you want FastMCP's client without the server footprint — CI environments, lightweight agents, library dependencies that shouldn't force Uvicorn on downstream users.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003eThe OAuth proxy received three hardening upgrades. Silent consent is now guarded against AS-in-the-middle attacks — a malicious authorization server can no longer silently approve a consent it wasn't meant to handle. Redirect URI allowlist matching now rejects dot-segment paths (\u003ccode\u003e/../\u003c/code\u003e, \u003ccode\u003e/./\u003c/code\u003e) that could otherwise bypass prefix checks. And \u003ccode\u003eResponseCachingMiddleware\u003c/code\u003e partitions its cache by access token, closing a gap where different users could see each other's cached responses.\u003c/p\u003e\n\u003ch2\u003eAuth\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eAzureB2CProvider\u003c/code\u003e adds first-class support for Azure AD B2C user flows. The OCI provider is fixed for 3.x installs. And \u003ccode\u003eOAuthProxy\u003c/code\u003e gains a public \u003ccode\u003eupdate_scopes()\u003c/code\u003e API for updating the proxy's required scopes after initialization — useful for servers that determine scope requirements at runtime.\u003c/p\u003e\n\u003ch2\u003eObservability\u003c/h2\u003e\n\u003cp\u003eOTEL instrumentation is now fully compliant with MCP semantic conventions. List operations (\u003ccode\u003elist_tools\u003c/code\u003e, \u003ccode\u003elist_resources\u003c/code\u003e, \u003ccode\u003elist_prompts\u003c/code\u003e, \u003ccode\u003elist_resource_templates\u003c/code\u003e) are instrumented, and delegate spans on proxy servers are enriched with backend attributes.\u003c/p\u003e\n\u003ch2\u003eThread Affinity\u003c/h2\u003e\n\u003cp\u003eSync tools run in a thread pool by default. If your tool holds thread-local state or is bound to a specific thread (UI frameworks, some database drivers), you can now opt out:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/d8dcc273cac9f6f17889a1b60adbdc654f948a50\"\u003e\u003ccode\u003ed8dcc27\u003c/code\u003e\u003c/a\u003e Decouple component imports from server (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4150\"\u003e#4150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/255e3e491082d8fbaeb3ccf25be6983cbab8b657\"\u003e\u003ccode\u003e255e3e4\u003c/code\u003e\u003c/a\u003e fix(docs): use valid FA icon on client-only package page (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4139\"\u003e#4139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/73df4dcaeeba6f985607f633786d38db6caf23f7\"\u003e\u003ccode\u003e73df4dc\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4096\"\u003e#4096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/ee48a0fd6e077e1c32e996f7b51fd442e31c514f\"\u003e\u003ccode\u003eee48a0f\u003c/code\u003e\u003c/a\u003e Refine fastmcp-slim packaging (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4125\"\u003e#4125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/bb4894d2159cd10f0c07f038db9c56b14fb99586\"\u003e\u003ccode\u003ebb4894d\u003c/code\u003e\u003c/a\u003e Add fastmcp-slim for client-only installs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4122\"\u003e#4122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/8209093871af25bc3ceb50bfbcec317632218afd\"\u003e\u003ccode\u003e8209093\u003c/code\u003e\u003c/a\u003e fix(http): terminate active streamable-HTTP transports before lifespan shutdo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/cf59a4511ff1980fd932215ef886e665c829bdbf\"\u003e\u003ccode\u003ecf59a45\u003c/code\u003e\u003c/a\u003e Fix OCI Provider issue in 3.x version. Add OCI auth provider example … (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4116\"\u003e#4116\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/89b99ecfb987781735295869d2e3d620dde7af4c\"\u003e\u003ccode\u003e89b99ec\u003c/code\u003e\u003c/a\u003e fix(proxy): fall back to live identifier for backend_* span attributes (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4109\"\u003e#4109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/310314cf149a18d0a76e5703ee98f80ffb035171\"\u003e\u003ccode\u003e310314c\u003c/code\u003e\u003c/a\u003e fix: cli option --no-banner is NOT passed to cli but server-spec in-correctly...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/28722f846a0319913a4a7b67dd65131d615214b6\"\u003e\u003ccode\u003e28722f8\u003c/code\u003e\u003c/a\u003e fix: drop exc_info for expected tool failures, remove unreachable ValidationE...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.2.0...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mcp` from 1.26.0 to 1.27.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/releases\"\u003emcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.27.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[v1.x] fix: catch PydanticUserError when generating output schema (pydantic 2.13 compat) by \u003ca href=\"https://github.com/maxisbey\"\u003e\u003ccode\u003e@​maxisbey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2435\"\u003emodelcontextprotocol/python-sdk#2435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[v1.x] fix(auth): coerce empty-string optional URL fields to None in OAuthClientMetadata by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2405\"\u003emodelcontextprotocol/python-sdk#2405\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[v1.x] build: restrict httpx to \u0026lt;1.0.0 by \u003ca href=\"https://github.com/maxisbey\"\u003e\u003ccode\u003e@​maxisbey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2559\"\u003emodelcontextprotocol/python-sdk#2559\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[v1.x] refactor: import SSEError from httpx_sse public API by \u003ca href=\"https://github.com/maxisbey\"\u003e\u003ccode\u003e@​maxisbey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2561\"\u003emodelcontextprotocol/python-sdk#2561\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/compare/v1.27.0...v1.27.1\"\u003ehttps://github.com/modelcontextprotocol/python-sdk/compare/v1.27.0...v1.27.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.27.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: remove unused \u003ccode\u003erequests\u003c/code\u003e dependency from simple-chatbot example by \u003ca href=\"https://github.com/maxisbey\"\u003e\u003ccode\u003e@​maxisbey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1959\"\u003emodelcontextprotocol/python-sdk#1959\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: backport conformance tests from main to v1.x by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2068\"\u003emodelcontextprotocol/python-sdk#2068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: add RFC 8707 resource validation to OAuth client by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2069\"\u003emodelcontextprotocol/python-sdk#2069\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add idle timeout for StreamableHTTP sessions by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1994\"\u003emodelcontextprotocol/python-sdk#1994\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[v1.x] fix: prevent command injection in example URL opening by \u003ca href=\"https://github.com/maxisbey\"\u003e\u003ccode\u003e@​maxisbey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2085\"\u003emodelcontextprotocol/python-sdk#2085\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd VERSIONING.md, ROADMAP.md, and DEPENDENCY_POLICY.md by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2084\"\u003emodelcontextprotocol/python-sdk#2084\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: restructure README into docs/ pages by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2091\"\u003emodelcontextprotocol/python-sdk#2091\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: comprehensive feature documentation for SEP-1730 Tier 1 by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2090\"\u003emodelcontextprotocol/python-sdk#2090\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix stub pages and improve docs structure by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2101\"\u003emodelcontextprotocol/python-sdk#2101\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix GitHub links to point to v1.x branch by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2102\"\u003emodelcontextprotocol/python-sdk#2102\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add snippet verification for docs/ pages by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2115\"\u003emodelcontextprotocol/python-sdk#2115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add server-side tool error handling documentation by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2129\"\u003emodelcontextprotocol/python-sdk#2129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBackport: Add missing TasksCallCapability to v1.x by \u003ca href=\"https://github.com/BabyChrist666\"\u003e\u003ccode\u003e@​BabyChrist666\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2137\"\u003emodelcontextprotocol/python-sdk#2137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[v1.x] fix: handle non-UTF-8 bytes in stdio server stdin by \u003ca href=\"https://github.com/maxisbey\"\u003e\u003ccode\u003e@​maxisbey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2303\"\u003emodelcontextprotocol/python-sdk#2303\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[v1.x] fix: handle ClosedResourceError when transport closes mid-request by \u003ca href=\"https://github.com/owendevereaux\"\u003e\u003ccode\u003e@​owendevereaux\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2334\"\u003emodelcontextprotocol/python-sdk#2334\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/owendevereaux\"\u003e\u003ccode\u003e@​owendevereaux\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2334\"\u003emodelcontextprotocol/python-sdk#2334\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/compare/v1.26.0...v1.27.0\"\u003ehttps://github.com/modelcontextprotocol/python-sdk/compare/v1.26.0...v1.27.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/77431ebe7dda9ed0c61451b22d3e7f8d981bc092\"\u003e\u003ccode\u003e77431eb\u003c/code\u003e\u003c/a\u003e [v1.x] refactor: import SSEError from httpx_sse public API (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2561\"\u003e#2561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/2034cae340e5991a39018f3ab4496ca35fa29698\"\u003e\u003ccode\u003e2034cae\u003c/code\u003e\u003c/a\u003e [v1.x] build: restrict httpx to \u0026lt;1.0.0 (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2559\"\u003e#2559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/73d458baac207cecf77d17e64c7ce3902f4bce04\"\u003e\u003ccode\u003e73d458b\u003c/code\u003e\u003c/a\u003e [v1.x] fix(auth): coerce empty-string optional URL fields to None in OAuthCli...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/8d4c2f5834f9925b969809d4db415bba130ee4e8\"\u003e\u003ccode\u003e8d4c2f5\u003c/code\u003e\u003c/a\u003e [v1.x] fix: catch PydanticUserError when generating output schema (pydantic 2...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/652478266702ac71a1d03692337bd5207ddbedf4\"\u003e\u003ccode\u003e6524782\u003c/code\u003e\u003c/a\u003e [v1.x] fix: handle ClosedResourceError when transport closes mid-request (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2334\"\u003e#2334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/2e9897e2b916bef25e7755146aeb9f9b69c1075d\"\u003e\u003ccode\u003e2e9897e\u003c/code\u003e\u003c/a\u003e [v1.x] fix: handle non-UTF-8 bytes in stdio server stdin (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2303\"\u003e#2303\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/f8d98b63a7e9ab5855d79556d3d7e5638472af6c\"\u003e\u003ccode\u003ef8d98b6\u003c/code\u003e\u003c/a\u003e Backport: Add missing TasksCallCapability to v1.x (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2137\"\u003e#2137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/c68e254bad1dd39e6a10dad43d954c6d17f9f514\"\u003e\u003ccode\u003ec68e254\u003c/code\u003e\u003c/a\u003e docs: add server-side tool error handling documentation (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2129\"\u003e#2129\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/1ef124e4a85c1c0947fdc6ba1dd1af384d866064\"\u003e\u003ccode\u003e1ef124e\u003c/code\u003e\u003c/a\u003e docs: add snippet verification for docs/ pages (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2115\"\u003e#2115\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/cfbbd7d71aeb094b122c8780a5cb3816e09f29af\"\u003e\u003ccode\u003ecfbbd7d\u003c/code\u003e\u003c/a\u003e docs: fix GitHub links to point to v1.x branch (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2102\"\u003e#2102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/compare/v1.26.0...v1.27.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prefab-ui` from 0.18.2 to 0.19.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/prefab/releases\"\u003eprefab-ui's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.19.2: Results May Vary\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump pytest from 9.0.2 to 9.0.3 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/420\"\u003ePrefectHQ/prefab#420\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump hono from 4.12.12 to 4.12.14 in /renderer by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/422\"\u003ePrefectHQ/prefab#422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump dompurify from 3.3.2 to 3.4.0 in /renderer by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/423\"\u003ePrefectHQ/prefab#423\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty 0.0.32 upgrade failure in PyodideSandbox by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/429\"\u003ePrefectHQ/prefab#429\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump postcss from 8.5.6 to 8.5.10 in /renderer by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/430\"\u003ePrefectHQ/prefab#430\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix result callback interpolation by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/447\"\u003ePrefectHQ/prefab#447\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump hono from 4.12.14 to 4.12.21 in /renderer by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/444\"\u003ePrefectHQ/prefab#444\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump idna from 3.13 to 3.15 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/443\"\u003ePrefectHQ/prefab#443\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump fast-uri from 3.1.0 to 3.1.2 in /renderer by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/439\"\u003ePrefectHQ/prefab#439\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump ip-address and express-rate-limit in /renderer by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/435\"\u003ePrefectHQ/prefab#435\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/prefab/compare/v0.19.1...v0.19.2\"\u003ehttps://github.com/PrefectHQ/prefab/compare/v0.19.1...v0.19.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.19.1: Through No Default of Your Own\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd defaults kwarg to Form.from_model for runtime prefill by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/421\"\u003ePrefectHQ/prefab#421\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/prefab/compare/v0.19.0...v0.19.1\"\u003ehttps://github.com/PrefectHQ/prefab/compare/v0.19.0...v0.19.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.19.0: Keynote Address\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix Pages flash on first navigation, clamp Progress overflow by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/410\"\u003ePrefectHQ/prefab#410\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd keyboard shortcuts, Kbd component, state-controlled Dialog by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/413\"\u003ePrefectHQ/prefab#413\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd presentation slideshow, expand docs examples by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/414\"\u003ePrefectHQ/prefab#414\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003e@​hono/node-server\u003c/code\u003e from 1.19.10 to 1.19.13 in /renderer by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/411\"\u003ePrefectHQ/prefab#411\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump hono from 4.12.7 to 4.12.12 in /renderer by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/412\"\u003ePrefectHQ/prefab#412\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump vite from 6.4.1 to 6.4.2 in /renderer by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/402\"\u003ePrefectHQ/prefab#402\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lodash from 4.17.23 to 4.18.1 in /renderer by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/397\"\u003ePrefectHQ/prefab#397\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix docs preview slider collapse, auto-sync Mintlify cache by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/415\"\u003ePrefectHQ/prefab#415\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lodash-es and langium in /renderer by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/406\"\u003ePrefectHQ/prefab#406\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake playground code panel collapsible and resizable by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/416\"\u003ePrefectHQ/prefab#416\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop fighting app.html merge conflicts by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/417\"\u003ePrefectHQ/prefab#417\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eNote generate-notes API in release workflow docs by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/418\"\u003ePrefectHQ/prefab#418\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/prefab/compare/v0.18.5...v0.19.0\"\u003ehttps://github.com/PrefectHQ/prefab/compare/v0.18.5...v0.19.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.18.5: Table Stakes\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix DataTable search, sort removal, and row deselect by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/408\"\u003ePrefectHQ/prefab#408\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/prefab/compare/v0.18.4...v0.18.5\"\u003ehttps://github.com/PrefectHQ/prefab/compare/v0.18.4...v0.18.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.18.4: Mod Squad\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefab/commit/96774dc984e7afaa4130f3fd134ca103f17170a8\"\u003e\u003ccode\u003e96774dc\u003c/code\u003e\u003c/a\u003e Bump ip-address and express-rate-limit in /renderer (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/issues/435\"\u003e#435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefab/commit/02baaae6f801a27e04da721f20e714c105247d78\"\u003e\u003ccode\u003e02baaae\u003c/code\u003e\u003c/a\u003e Bump fast-uri from 3.1.0 to 3.1.2 in /renderer (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/issues/439\"\u003e#439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefab/commit/e9bfd0b5eb485ae0e3710f573cd5a657a12e6e1f\"\u003e\u003ccode\u003ee9bfd0b\u003c/code\u003e\u003c/a\u003e Bump idna from 3.13 to 3.15 (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/issues/443\"\u003e#443\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefab/commit/41f91974ceae329539da124aa4e2f042810aafeb\"\u003e\u003ccode\u003e41f9197\u003c/code\u003e\u003c/a\u003e Bump hono from 4.12.14 to 4.12.21 in /renderer (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/issues/444\"\u003e#444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefab/commit/1e2a9532d8fed78b232ea355c225c40e9061fbd0\"\u003e\u003ccode\u003e1e2a953\u003c/code\u003e\u003c/a\u003e Fix result callback interpolation (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefab/commit/6def5f8853de7accd848f9eb9204db779335ba5b\"\u003e\u003ccode\u003e6def5f8\u003c/code\u003e\u003c/a\u003e Bump postcss from 8.5.6 to 8.5.10 in /renderer (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/issues/430\"\u003e#430\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefab/commit/d645b32413e1ae4d44efe7e20fd304b6c5da828f\"\u003e\u003ccode\u003ed645b32\u003c/code\u003e\u003c/a\u003e Fix ty 0.0.32 upgrade failure in PyodideSandbox (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/issues/429\"\u003e#429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefab/commit/160480be7037fe5d4a06f9d0d7b744d3e288411e\"\u003e\u003ccode\u003e160480b\u003c/code\u003e\u003c/a\u003e Bump dompurify from 3.3.2 to 3.4.0 in /renderer (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/issues/423\"\u003e#423\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefab/commit/291ccc0d5e229033bc22fa22f579fcfbab8319c1\"\u003e\u003ccode\u003e291ccc0\u003c/code\u003e\u003c/a\u003e Bump hono from 4.12.12 to 4.12.14 in /renderer (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/issues/422\"\u003e#422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefab/commit/5214f29d1fc114b35a3a7bc52714c38ad60fdbe8\"\u003e\u003ccode\u003e5214f29\u003c/code\u003e\u003c/a\u003e Bump pytest from 9.0.2 to 9.0.3 (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/issues/420\"\u003e#420\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/prefab/compare/v0.18.2...v0.19.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.12.5 to 2.13.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.3 2026-04-20\u003c/h2\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.2 2026-04-17\u003c/h2\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.1 2026-04-15\u003c/h2\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.0 2026-04-13\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.1\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.0 (2026-04-13)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe highlights of the v2.13 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-13-release\"\u003eblog post\u003c/a\u003e.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/cf67d4b3193c3fe43ede18612ed62785eee11382\"\u003e\u003ccode\u003ecf67d4b\u003c/code\u003e\u003c/a\u003e Fix linting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f0d8a214a5803036db46a56b1f62f1e56b81d662\"\u003e\u003ccode\u003ef0d8a21\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/5e3fe1d41a00f441204241c66078003ae0391f9a\"\u003e\u003ccode\u003e5e3fe1d\u003c/code\u003e\u003c/a\u003e Check for pydantic tag pattern in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7f9edcc2a191d2eaa9751220eb910914e716a686\"\u003e\u003ccode\u003e7f9edcc\u003c/code\u003e\u003c/a\u003e Document tagging conventions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b46a0c9b8a4dd967fda8ec1a92f6437076bf262c\"\u003e\u003ccode\u003eb46a0c9\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/50629c851e61d887d5420452c311ec6203f1f400\"\u003e\u003ccode\u003e50629c8\u003c/code\u003e\u003c/a\u003e Update to PyPy 7.3.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8522ebb71e5e9a6f7188af5f009f01785b8cf725\"\u003e\u003ccode\u003e8522ebb\u003c/code\u003e\u003c/a\u003e Preserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a37f3aff090ca342dc5f48304889963530b993f8\"\u003e\u003ccode\u003ea37f3af\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003eMISSING\u003c/code\u003e sentinel test to work with unreleased \u003ccode\u003etyping_extensions\u003c/code\u003e ver...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/909259a9df660518033aa686b689f045a6eaf9d2\"\u003e\u003ccode\u003e909259a\u003c/code\u003e\u003c/a\u003e Remove Logfire example in documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c4174c366606fc2dc46cb806833a080aefa77df\"\u003e\u003ccode\u003e2c4174c\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.155 to 0.2.185\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.5...v2.13.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.2 to 0.15.14\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.14\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-21.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003eairflow-task-implicit-multiple-outputs\u003c/code\u003e (\u003ccode\u003eAIR202\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25152\"\u003e#25152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-use-pathlib\u003c/code\u003e] Mark \u003ccode\u003ePTH101\u003c/code\u003e fix as unsafe when first argument is a class attribute annotated as \u003ccode\u003eint\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25086\"\u003e#25086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Implement \u003ccode\u003etoo-many-try-statements\u003c/code\u003e (\u003ccode\u003eW0717\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23970\"\u003e#23970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add \u003ccode\u003eincorrect-decorator-order\u003c/code\u003e (\u003ccode\u003eRUF074\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23461\"\u003e#23461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add \u003ccode\u003efallible-context-manager\u003c/code\u003e (\u003ccode\u003eRUF075\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22844\"\u003e#22844\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix lambda formatting in interpolated string expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25144\"\u003e#25144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat generic \u003ccode\u003efrozenset\u003c/code\u003e annotations as immutable (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25251\"\u003e#25251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Avoid \u003ccode\u003estrict\u003c/code\u003e behavior when \u003ccode\u003efuture-annotations\u003c/code\u003e are enabled (\u003ccode\u003eTC001\u003c/code\u003e, \u003ccode\u003eTC002\u003c/code\u003e, \u003ccode\u003eTC003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25035\"\u003e#25035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Avoid false positives in \u003ccode\u003eelse\u003c/code\u003e clause (\u003ccode\u003ePLR1733\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25177\"\u003e#25177\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Skip \u003ccode\u003eC417\u003c/code\u003e for lambdas with positional-only parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25272\"\u003e#25272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Preserve f-string source verbatim in \u003ccode\u003eSIM101\u003c/code\u003e fix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25061\"\u003e#25061\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid unnecessary parser lookahead for operators (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25290\"\u003e#25290\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate code example setting Neovim LSP log level (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25284\"\u003e#25284\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd full PEP 798 support (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25104\"\u003e#25104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a parser recursion limit (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24810\"\u003e#24810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate various \u003ccode\u003eruff_python_stdlib\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25273\"\u003e#25273\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ocaballeror\"\u003e\u003ccode\u003e@​ocaballeror\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lerebear\"\u003e\u003ccode\u003e@​lerebear\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin\"\u003e\u003ccode\u003e@​samuelcolvin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/baltasarblanco\"\u003e\u003ccode\u003e@​baltasarblanco\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aconal-com\"\u003e\u003ccode\u003e@​aconal-com\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JelleZijlstra\"\u003e\u003ccode\u003e@​JelleZijlstra\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.14\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-21.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003eairflow-task-implicit-multiple-outputs\u003c/code\u003e (\u003ccode\u003eAIR202\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25152\"\u003e#25152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-use-pathlib\u003c/code\u003e] Mark \u003ccode\u003ePTH101\u003c/code\u003e fix as unsafe when first argument is a class attribute annotated as \u003ccode\u003eint\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25086\"\u003e#25086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Implement \u003ccode\u003etoo-many-try-statements\u003c/code\u003e (\u003ccode\u003eW0717\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23970\"\u003e#23970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add \u003ccode\u003eincorrect-decorator-order\u003c/code\u003e (\u003ccode\u003eRUF074\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23461\"\u003e#23461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add \u003ccode\u003efallible-context-manager\u003c/code\u003e (\u003ccode\u003eRUF075\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22844\"\u003e#22844\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix lambda formatting in interpolated string expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25144\"\u003e#25144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat generic \u003ccode\u003efrozenset\u003c/code\u003e annotations as immutable (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25251\"\u003e#25251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Avoid \u003ccode\u003estrict\u003c/code\u003e behavior when \u003ccode\u003efuture-annotations\u003c/code\u003e are enabled (\u003ccode\u003eTC001\u003c/code\u003e, \u003ccode\u003eTC002\u003c/code\u003e, \u003ccode\u003eTC003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25035\"\u003e#25035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Avoid false positives in \u003ccode\u003eelse\u003c/code\u003e clause (\u003ccode\u003ePLR1733\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25177\"\u003e#25177\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Skip \u003ccode\u003eC417\u003c/code\u003e for lambdas with positional-only parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25272\"\u003e#25272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Preserve f-string source verbatim in \u003ccode\u003eSIM101\u003c/code\u003e fix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25061\"\u003e#25061\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid unnecessary parser lookahead for operators (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25290\"\u003e#25290\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate code example setting Neovim LSP log level (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25284\"\u003e#25284\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd full PEP 798 support (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25104\"\u003e#25104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a parser recursion limit (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24810\"\u003e#24810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate various \u003ccode\u003eruff_python_stdlib\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25273\"\u003e#25273\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ocaballeror\"\u003e\u003ccode\u003e@​ocaballeror\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lerebear\"\u003e\u003ccode\u003e@​lerebear\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin\"\u003e\u003ccode\u003e@​samuelcolvin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/baltasarblanco\"\u003e\u003ccode\u003e@​baltasarblanco\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aconal-com\"\u003e\u003ccode\u003e@​aconal-com\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JelleZijlstra\"\u003e\u003ccode\u003e@​JelleZijlstra\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adityasingh2400\"\u003e\u003ccode\u003e@​adityasingh2400\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9ad2da3015e5faf73bdc5f1d09df3e47238e3edf\"\u003e\u003ccode\u003e9ad2da3\u003c/code\u003e\u003c/a\u003e Bump 0.15.14 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25295\"\u003e#25295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/c714e84952510696c05ec21b0158a3548898f594\"\u003e\u003ccode\u003ec714e84\u003c/code\u003e\u003c/a\u003e [ty] Modernize setup of union types in mdtests (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25291\"\u003e#25291\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/8a8e35ebfe318e2467a0f276e5d1a3a9032a55ad\"\u003e\u003ccode\u003e8a8e35e\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Skip \u003ccode\u003eC417\u003c/code\u003e for lambdas with positional-only parame...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/aea5ed4d278017057c2e842c6c3a2e92ad71495f\"\u003e\u003ccode\u003eaea5ed4\u003c/code\u003e\u003c/a\u003e Avoid unnecessary parser lookahead for operators (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25290\"\u003e#25290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e9d72bb420f26c23e6660bfce4dfa0028b931bff\"\u003e\u003ccode\u003ee9d72bb\u003c/code\u003e\u003c/a\u003e [ty] Allow enum member accesses on \u003ccode\u003eself\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25077\"\u003e#25077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/6cbd59b511a92d5f408db57bde33367c0d47b672\"\u003e\u003ccode\u003e6cbd59b\u003c/code\u003e\u003c/a\u003e Set \u003ccode\u003eexclude-newer = \u0026quot;7 days\u0026quot;\u003c/code\u003e in our PEP-723 scripts (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25285\"\u003e#25285\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9999a3967ae28fe3295131e8883b6947f272a076\"\u003e\u003ccode\u003e9999a39\u003c/code\u003e\u003c/a\u003e Update code example on how to update Neovim LSP log level (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25284\"\u003e#25284\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/67d8c544f0d1c526a2fc60d4bb1358fd7956d178\"\u003e\u003ccode\u003e67d8c54\u003c/code\u003e\u003c/a\u003e [ty] Retain recursively-defined state in binary expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25277\"\u003e#25277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/25a3191140dc0467f9d196f35c128fefde269261\"\u003e\u003ccode\u003e25a3191\u003c/code\u003e\u003c/a\u003e [ty] Refine Callable class-decorator fallback for unknown results (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25250\"\u003e#25250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/c423054dc09e5b644c926b6b527b6accfbe693e9\"\u003e\u003ccode\u003ec423054\u003c/code\u003e\u003c/a\u003e Add a recursion limit to the parser (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24810\"\u003e#24810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.2...0.15.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n","html_url":"https://github.com/aravindev/inkscape_mcp/pull/4","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/aravindev%2Finkscape_mcp/issues/4","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/4/packages"},{"uuid":"4489624457","node_id":"PR_kwDOSgwX587dr5zU","number":12,"state":"closed","title":"Update fastmcp requirement from \u003e=2.0.0 to \u003e=3.3.1","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-23T07:31:45.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-20T20:16:29.000Z","updated_at":"2026-05-23T07:31:47.000Z","time_to_close":213316,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"fastmcp","old_version":"\u003e=2.0.0","new_version":"\u003e=3.3.1","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [fastmcp](https://github.com/PrefectHQ/fastmcp) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1: Loop There It Is\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3.1 is a hotfix for the 3.3 packaging split. Clean installs of 3.3.0 could fail on standalone component imports like \u003ccode\u003efrom fastmcp.tools import tool\u003c/code\u003e because component modules reached auth and task primitives through \u003ccode\u003efastmcp.server\u003c/code\u003e, pulling in the server/provider stack and exposing a circular import.\u003c/p\u003e\n\u003cp\u003eComponent-level auth and task primitives now live in lightweight utility modules, with the old server import paths preserved as compatibility re-exports. Component imports stay lightweight, existing server-facing imports continue to work, and the release also includes small docs corrections from the 3.3 rollout.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(docs): use valid FA icon on client-only package page by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4139\"\u003ePrefectHQ/fastmcp#4139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecouple component imports from server by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4150\"\u003ePrefectHQ/fastmcp#4150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/blob/main/docs/changelog.mdx\"\u003efastmcp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003chr /\u003e\n\u003ch2\u003etitle: \u0026quot;Changelog\u0026quot;\nicon: \u0026quot;list-check\u0026quot;\nrss: true\ntag: NEW\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.1\"\u003ev3.1.1: 'Tis But a Patch\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ePins \u003ccode\u003epydantic-monty\u003c/code\u003e below 0.0.8 to fix a breaking change in Monty that affects code mode. Monty 0.0.8 removed the \u003ccode\u003eexternal_functions\u003c/code\u003e constructor parameter, causing \u003ccode\u003eMontySandboxProvider\u003c/code\u003e to fail. This patch caps the version so existing installs work correctly.\u003c/p\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePin pydantic-monty below 0.0.8 to fix code mode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3497\"\u003e#3497\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.1.0...v3.1.1\"\u003ev3.1.0...v3.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.0\"\u003ev3.1.0: Code to Joy\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFastMCP 3.1 is the Code Mode release. The 3.0 architecture introduced providers and transforms as the extensibility layer — 3.1 puts that architecture to work, shipping the most requested capability since launch: servers that can find and execute code on behalf of agents, without requiring clients to know what tools exist.\u003c/p\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Search transforms for tool discovery by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3154\"\u003e#3154\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd experimental CodeMode transform by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3297\"\u003e#3297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Prefab Apps integration for MCP tool UIs by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3316\"\u003e#3316\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLazy-load heavy imports to reduce import time by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3295\"\u003e#3295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd http_client parameter to all token verifiers for connection pooling by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3300\"\u003e#3300\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd in-memory caching for token introspection results by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3298\"\u003e#3298\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SessionStart hook to install gh CLI in cloud sessions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3308\"\u003e#3308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty 0.0.19 type errors by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3310\"\u003e#3310\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCode Mode: Add resource limits to MontySandboxProvider by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3326\"\u003e#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept transforms as FastMCP init kwarg by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3324\"\u003e#3324\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSplit large test files to comply with loq line limit by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd -m/--module flag to \u003ccode\u003efastmcp run\u003c/code\u003e and \u003ccode\u003edev inspector\u003c/code\u003e by \u003ca href=\"https://github.com/dgenio\"\u003e\u003ccode\u003e@​dgenio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3331\"\u003e#3331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd search_result_serializer hook and serialize_tools_for_output_markdown by \u003ca href=\"https://github.com/MagnusS0\"\u003e\u003ccode\u003e@​MagnusS0\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3337\"\u003e#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd MultiAuth for composing multiple token verification sources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3335\"\u003e#3335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdds PropelAuth as an AuthProvider by \u003ca href=\"https://github.com/andrew-propelauth\"\u003e\u003ccode\u003e@​andrew-propelauth\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3358\"\u003e#3358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace vendored DI with uncalled-for by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3301\"\u003e#3301\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecompose CodeMode into composable discovery tools by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3354\"\u003e#3354\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(contrib): auto-sync MCPMixin decorators with from_function signatures by \u003ca href=\"https://github.com/AnkeshThakur\"\u003e\u003ccode\u003e@​AnkeshThakur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3323\"\u003e#3323\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Google GenAI Sampling Handler by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/2977\"\u003e#2977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ListTools, search limit, and catalog size annotation to CodeMode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3359\"\u003e#3359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow configuring FastMCP transport setting in the same way as other configuration by \u003ca href=\"https://github.com/jvdmr\"\u003e\u003ccode\u003e@​jvdmr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1796\"\u003e#1796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd include_unversioned option to VersionFilter by \u003ca href=\"https://github.com/yangbaechu\"\u003e\u003ccode\u003e@​yangbaechu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3349\"\u003e#3349\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/d8dcc273cac9f6f17889a1b60adbdc654f948a50\"\u003e\u003ccode\u003ed8dcc27\u003c/code\u003e\u003c/a\u003e Decouple component imports from server (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4150\"\u003e#4150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/255e3e491082d8fbaeb3ccf25be6983cbab8b657\"\u003e\u003ccode\u003e255e3e4\u003c/code\u003e\u003c/a\u003e fix(docs): use valid FA icon on client-only package page (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4139\"\u003e#4139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/73df4dcaeeba6f985607f633786d38db6caf23f7\"\u003e\u003ccode\u003e73df4dc\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4096\"\u003e#4096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/ee48a0fd6e077e1c32e996f7b51fd442e31c514f\"\u003e\u003ccode\u003eee48a0f\u003c/code\u003e\u003c/a\u003e Refine fastmcp-slim packaging (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4125\"\u003e#4125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/bb4894d2159cd10f0c07f038db9c56b14fb99586\"\u003e\u003ccode\u003ebb4894d\u003c/code\u003e\u003c/a\u003e Add fastmcp-slim for client-only installs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4122\"\u003e#4122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/8209093871af25bc3ceb50bfbcec317632218afd\"\u003e\u003ccode\u003e8209093\u003c/code\u003e\u003c/a\u003e fix(http): terminate active streamable-HTTP transports before lifespan shutdo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/cf59a4511ff1980fd932215ef886e665c829bdbf\"\u003e\u003ccode\u003ecf59a45\u003c/code\u003e\u003c/a\u003e Fix OCI Provider issue in 3.x version. Add OCI auth provider example … (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4116\"\u003e#4116\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/89b99ecfb987781735295869d2e3d620dde7af4c\"\u003e\u003ccode\u003e89b99ec\u003c/code\u003e\u003c/a\u003e fix(proxy): fall back to live identifier for backend_* span attributes (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4109\"\u003e#4109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/310314cf149a18d0a76e5703ee98f80ffb035171\"\u003e\u003ccode\u003e310314c\u003c/code\u003e\u003c/a\u003e fix: cli option --no-banner is NOT passed to cli but server-spec in-correctly...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/28722f846a0319913a4a7b67dd65131d615214b6\"\u003e\u003ccode\u003e28722f8\u003c/code\u003e\u003c/a\u003e fix: drop exc_info for expected tool failures, remove unreachable ValidationE...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v2.0.0...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/scutuatua-crypto/scutua-mcp/pull/12","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/scutuatua-crypto%2Fscutua-mcp/issues/12","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12/packages"},{"uuid":"4486015144","node_id":"PR_kwDOL_eVX87dgOxs","number":1806,"state":"open","title":"chore(deps): bump the python-deps group with 7 updates","user":"dependabot[bot]","labels":["dependencies","e2e-test","run-examples","python:uv","e2e-full-mysql"],"assignees":[],"locked":false,"comments_count":9,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-20T11:37:13.000Z","updated_at":"2026-05-20T11:57:28.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-deps","update_count":7,"packages":[{"name":"daft","old_version":"0.7.11","new_version":"0.7.14","repository_url":"https://github.com/Eventual-Inc/Daft"},{"name":"boto3","old_version":"1.43.6","new_version":"1.43.11","repository_url":"https://github.com/boto/boto3"},{"name":"azure-storage-blob","old_version":"12.28.0","new_version":"12.29.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"azure-storage-file-datalake","old_version":"12.23.0","new_version":"12.24.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"fastmcp","old_version":"3.2.4","new_version":"3.3.1","repository_url":"https://github.com/PrefectHQ/fastmcp"},{"name":"numpy","old_version":"2.4.4","new_version":"2.4.6","repository_url":"https://github.com/numpy/numpy"},{"name":"pymdown-extensions","old_version":"10.21.2","new_version":"10.21.3","repository_url":"https://github.com/facelessuser/pymdown-extensions"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-deps group with 7 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [daft](https://github.com/Eventual-Inc/Daft) | `0.7.11` | `0.7.14` |\n| [boto3](https://github.com/boto/boto3) | `1.43.6` | `1.43.11` |\n| [azure-storage-blob](https://github.com/Azure/azure-sdk-for-python) | `12.28.0` | `12.29.0` |\n| [azure-storage-file-datalake](https://github.com/Azure/azure-sdk-for-python) | `12.23.0` | `12.24.0` |\n| [fastmcp](https://github.com/PrefectHQ/fastmcp) | `3.2.4` | `3.3.1` |\n| [numpy](https://github.com/numpy/numpy) | `2.4.4` | `2.4.6` |\n| [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) | `10.21.2` | `10.21.3` |\n\nUpdates `daft` from 0.7.11 to 0.7.14\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Eventual-Inc/Daft/releases\"\u003edaft's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.7.14\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed 🚀\u003c/h2\u003e\n\u003ch2\u003e✨ Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat(flotilla): hint users to switch to flight_shuffle on large shuffles \u003ca href=\"https://github.com/colin-ho\"\u003e\u003ccode\u003e@​colin-ho\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6962\"\u003e#6962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add uuidv7 generation \u003ca href=\"https://github.com/everettVT\"\u003e\u003ccode\u003e@​everettVT\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6909\"\u003e#6909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(flotilla): Distributed Limit Counter \u003ca href=\"https://github.com/colin-ho\"\u003e\u003ccode\u003e@​colin-ho\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6942\"\u003e#6942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add JSON functions json_array_length, json_object_keys, json_tuple \u003ca href=\"https://github.com/XuQianJin-Stars\"\u003e\u003ccode\u003e@​XuQianJin-Stars\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6945\"\u003e#6945\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add conv function for PySpark parity \u003ca href=\"https://github.com/YuangGao\"\u003e\u003ccode\u003e@​YuangGao\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6910\"\u003e#6910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: ASOF join benchmarking scripts \u003ca href=\"https://github.com/euanlimzx\"\u003e\u003ccode\u003e@​euanlimzx\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6940\"\u003e#6940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(show): env defaults and auto alignment for preview output \u003ca href=\"https://github.com/BABTUNA\"\u003e\u003ccode\u003e@​BABTUNA\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6856\"\u003e#6856\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(temporal): add Spark-style temporal aliases \u003ca href=\"https://github.com/BABTUNA\"\u003e\u003ccode\u003e@​BABTUNA\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6830\"\u003e#6830\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: hash(-0.0) == hash(0.0) \u003ca href=\"https://github.com/rchowell\"\u003e\u003ccode\u003e@​rchowell\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6963\"\u003e#6963\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: short-circuit on empty micropartitions \u003ca href=\"https://github.com/rchowell\"\u003e\u003ccode\u003e@​rchowell\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6956\"\u003e#6956\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🚀 Performance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eperf(parquet): rewrite reader with arrow-rs public decoder API \u003ca href=\"https://github.com/colin-ho\"\u003e\u003ccode\u003e@​colin-ho\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6952\"\u003e#6952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eperf(flotilla): Coalesce task outputs based on byte threshold \u003ca href=\"https://github.com/colin-ho\"\u003e\u003ccode\u003e@​colin-ho\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6943\"\u003e#6943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eperf(shuffle): Write one shuffle file per task instead of N partition files \u003ca href=\"https://github.com/colin-ho\"\u003e\u003ccode\u003e@​colin-ho\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6948\"\u003e#6948\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e📖 Documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003edocs: Update API references and fix code examples \u003ca href=\"https://github.com/colin-ho\"\u003e\u003ccode\u003e@​colin-ho\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6938\"\u003e#6938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs(examples): migrate text-embeddings example to public bucket \u003ca href=\"https://github.com/colin-ho\"\u003e\u003ccode\u003e@​colin-ho\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6941\"\u003e#6941\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🔧 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: migrate daft.io.lance to daft_lance \u003ca href=\"https://github.com/rchowell\"\u003e\u003ccode\u003e@​rchowell\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6957\"\u003e#6957\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the all group across 1 directory with 4 updates @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6863\"\u003e#6863\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⬆️ Dependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the all group across 1 directory with 4 updates @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6863\"\u003e#6863\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Eventual-Inc/Daft/compare/v0.7.13...v0.7.14\"\u003ehttps://github.com/Eventual-Inc/Daft/compare/v0.7.13...v0.7.14\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.7.13\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed 🚀\u003c/h2\u003e\n\u003ch2\u003e✨ Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add forward ASOF joins \u003ca href=\"https://github.com/euanlimzx\"\u003e\u003ccode\u003e@​euanlimzx\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6918\"\u003e#6918\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Eventual-Inc/Daft/commit/afa4b9d61f0807609dddd1d523ccacf7fe0f160a\"\u003e\u003ccode\u003eafa4b9d\u003c/code\u003e\u003c/a\u003e perf(parquet): rewrite reader with arrow-rs public decoder API (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6952\"\u003e#6952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Eventual-Inc/Daft/commit/c41da6a8915472b8a2564c9879bf304c4d3b59b9\"\u003e\u003ccode\u003ec41da6a\u003c/code\u003e\u003c/a\u003e perf(flotilla): Coalesce task outputs based on byte threshold (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6943\"\u003e#6943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Eventual-Inc/Daft/commit/d3c584c5b3fca1659329a4681f90d824355a170e\"\u003e\u003ccode\u003ed3c584c\u003c/code\u003e\u003c/a\u003e feat(flotilla): hint users to switch to flight_shuffle on large shuffles (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6962\"\u003e#6962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Eventual-Inc/Daft/commit/7a2c5cdbb2e2c220e5324e14d3ac87069a919c9b\"\u003e\u003ccode\u003e7a2c5cd\u003c/code\u003e\u003c/a\u003e fix: hash(-0.0) == hash(0.0) (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6963\"\u003e#6963\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Eventual-Inc/Daft/commit/8ae8dfcfbd1fa7a4a67e38cc6695a3ccf5666e44\"\u003e\u003ccode\u003e8ae8dfc\u003c/code\u003e\u003c/a\u003e chore: migrate daft.io.lance to daft_lance (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6957\"\u003e#6957\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Eventual-Inc/Daft/commit/3e3debab5dc184df236ee7c29c54de8616ee0432\"\u003e\u003ccode\u003e3e3deba\u003c/code\u003e\u003c/a\u003e fix: short-circuit on empty micropartitions (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6956\"\u003e#6956\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Eventual-Inc/Daft/commit/803ebe9e26e41e23ee07bd0d559b9371f2ba17b2\"\u003e\u003ccode\u003e803ebe9\u003c/code\u003e\u003c/a\u003e docs: Update API references and fix code examples (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6938\"\u003e#6938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Eventual-Inc/Daft/commit/6524d6340c511c20f990e0ce633d12e76fe4d31a\"\u003e\u003ccode\u003e6524d63\u003c/code\u003e\u003c/a\u003e perf(shuffle): Write one shuffle file per task instead of N partition files (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Eventual-Inc/Daft/commit/f725fe8f0281621c372dd762e33d09b6f19b6308\"\u003e\u003ccode\u003ef725fe8\u003c/code\u003e\u003c/a\u003e feat: add uuidv7 generation (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6909\"\u003e#6909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Eventual-Inc/Daft/commit/9beb5f258b5a88a3fc2dafd7d59b0f5190b847f1\"\u003e\u003ccode\u003e9beb5f2\u003c/code\u003e\u003c/a\u003e feat(flotilla): Distributed Limit Counter (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6942\"\u003e#6942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Eventual-Inc/Daft/compare/v0.7.11...v0.7.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.43.6 to 1.43.11\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/c628e75265dc9d48b40a216c72575e46348bbd21\"\u003e\u003ccode\u003ec628e75\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.11'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/ac6f929ef6687ea327a2c108d27a9be29c929483\"\u003e\u003ccode\u003eac6f929\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/bb47b732471871fd1fadd0270ea3ae7e4960ecd5\"\u003e\u003ccode\u003ebb47b73\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/d8c26e0d16ce4c45ae61bd48806eb13c376bffd8\"\u003e\u003ccode\u003ed8c26e0\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.10'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/4ed1db810f9a4d6b99cdde0efc1ceb12afc12ade\"\u003e\u003ccode\u003e4ed1db8\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.10' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/413e36a90be5a8b4b0acbe6e252ed2685cc47b9d\"\u003e\u003ccode\u003e413e36a\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/401448dd2089da9d1294b29307f2c58a41750fbb\"\u003e\u003ccode\u003e401448d\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/6d47260e8d2940d3fe3ad96bf5f2e2f0500dfacb\"\u003e\u003ccode\u003e6d47260\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.9'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/df96d6dc6d8faca315b905732bdcb89eeb0a252c\"\u003e\u003ccode\u003edf96d6d\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.9' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/7fb98723970e63519544ad72418d7143eafe003d\"\u003e\u003ccode\u003e7fb9872\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.9\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.43.6...1.43.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `azure-storage-blob` from 12.28.0 to 12.29.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Azure/azure-sdk-for-python/releases\"\u003eazure-storage-blob's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eazure-storage-blob_12.29.0\u003c/h2\u003e\n\u003ch2\u003e12.29.0 (2026-05-14)\u003c/h2\u003e\n\u003ch3\u003eFeatures Added\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStable release of features from 12.29.0b1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugs Fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed an issue where \u003ccode\u003eBlobClient\u003c/code\u003e's \u003ccode\u003edownload_blob\u003c/code\u003e did not retry upon\n\u003ccode\u003eServiceReponseError\u003c/code\u003e and \u003ccode\u003eServiceResponseTimeoutError\u003c/code\u003e exceptions\u003c/li\u003e\n\u003cli\u003eFixed various issues with configuring logging via \u003ccode\u003elogging_enable\u003c/code\u003e and \u003ccode\u003elogging_body\u003c/code\u003e keywords on a per-request\nbasis and with retries. Prior to this fix logging may have not behaved as expected, especially on retries.\u003c/li\u003e\n\u003cli\u003eFix a potential memory leak caused by improper exception handling that could occur under rare circumstances.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/e73548b8a2e8fa20c3ae9114e94b548cb69a309e\"\u003e\u003ccode\u003ee73548b\u003c/code\u003e\u003c/a\u003e Release date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/60f7b1669ff9fbb04fb0655054ac8963a1a7c8fc\"\u003e\u003ccode\u003e60f7b16\u003c/code\u003e\u003c/a\u003e Changed release date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/5280297029137c50a658d9076eee9f0904314ff1\"\u003e\u003ccode\u003e5280297\u003c/code\u003e\u003c/a\u003e Modified release date to 5/12/2026\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/15e1ae938b23ef5615b354c9d0e0ce4d53b45080\"\u003e\u003ccode\u003e15e1ae9\u003c/code\u003e\u003c/a\u003e \u003cem\u003e\u003cstrong\u003eNO_CI\u003c/strong\u003e\u003c/em\u003e [Doc] Update references to wiki pages (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/46169\"\u003e#46169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/3f5c4d24273a6de44dbbb3499a6df1684a0dbba2\"\u003e\u003ccode\u003e3f5c4d2\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ecibuildwheel\u003c/code\u003e not necessary in \u003ccode\u003ebuild-system\u003c/code\u003e metadata for `azure-storage-ex...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/5b5b757fd10bd3df17085d1d2004185652154c93\"\u003e\u003ccode\u003e5b5b757\u003c/code\u003e\u003c/a\u003e Modified release date to 2026-05-11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/8b9a3e5b05be15f247d0b01fa82bce38dfda627a\"\u003e\u003ccode\u003e8b9a3e5\u003c/code\u003e\u003c/a\u003e [Storage][101] Cherry pick recent fixes and release prep (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/46659\"\u003e#46659\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/fdae976c1db9fbab1b313bd41703e1c3c863404b\"\u003e\u003ccode\u003efdae976\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into release/storage/stg101\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/1e540de672e6e5f51f4e9302491b0809978e8966\"\u003e\u003ccode\u003e1e540de\u003c/code\u003e\u003c/a\u003e Fix typing contract for max_concurrency in File Share client (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45637\"\u003e#45637\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/fa44dea36fbb8948acb7035a25b2a918cb9e29db\"\u003e\u003ccode\u003efa44dea\u003c/code\u003e\u003c/a\u003e Fix typing contract for max_concurrency in Datalake client (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45631\"\u003e#45631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Azure/azure-sdk-for-python/compare/azure-storage-blob_12.28.0...azure-storage-blob_12.29.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `azure-storage-file-datalake` from 12.23.0 to 12.24.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Azure/azure-sdk-for-python/releases\"\u003eazure-storage-file-datalake's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eazure-storage-file-datalake_12.24.0\u003c/h2\u003e\n\u003ch2\u003e12.24.0 (2026-05-14)\u003c/h2\u003e\n\u003ch3\u003eFeatures Added\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStable release of features from 12.24.0b1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugs Fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed various issues with configuring logging via \u003ccode\u003elogging_enable\u003c/code\u003e and \u003ccode\u003elogging_body\u003c/code\u003e keywords on a per-request\nbasis and with retries. Prior to this fix logging may have not behaved as expected, especially on retries.\u003c/li\u003e\n\u003cli\u003eFix a potential memory leak caused by improper exception handling that could occur under rare circumstances.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/e73548b8a2e8fa20c3ae9114e94b548cb69a309e\"\u003e\u003ccode\u003ee73548b\u003c/code\u003e\u003c/a\u003e Release date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/60f7b1669ff9fbb04fb0655054ac8963a1a7c8fc\"\u003e\u003ccode\u003e60f7b16\u003c/code\u003e\u003c/a\u003e Changed release date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/5280297029137c50a658d9076eee9f0904314ff1\"\u003e\u003ccode\u003e5280297\u003c/code\u003e\u003c/a\u003e Modified release date to 5/12/2026\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/15e1ae938b23ef5615b354c9d0e0ce4d53b45080\"\u003e\u003ccode\u003e15e1ae9\u003c/code\u003e\u003c/a\u003e \u003cem\u003e\u003cstrong\u003eNO_CI\u003c/strong\u003e\u003c/em\u003e [Doc] Update references to wiki pages (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/46169\"\u003e#46169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/3f5c4d24273a6de44dbbb3499a6df1684a0dbba2\"\u003e\u003ccode\u003e3f5c4d2\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ecibuildwheel\u003c/code\u003e not necessary in \u003ccode\u003ebuild-system\u003c/code\u003e metadata for `azure-storage-ex...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/5b5b757fd10bd3df17085d1d2004185652154c93\"\u003e\u003ccode\u003e5b5b757\u003c/code\u003e\u003c/a\u003e Modified release date to 2026-05-11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/8b9a3e5b05be15f247d0b01fa82bce38dfda627a\"\u003e\u003ccode\u003e8b9a3e5\u003c/code\u003e\u003c/a\u003e [Storage][101] Cherry pick recent fixes and release prep (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/46659\"\u003e#46659\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/fdae976c1db9fbab1b313bd41703e1c3c863404b\"\u003e\u003ccode\u003efdae976\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into release/storage/stg101\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/af6334ecf970329c55428e72a36daef26a51a858\"\u003e\u003ccode\u003eaf6334e\u003c/code\u003e\u003c/a\u003e Port setup.py to pyproject.toml for keyvault data-plane packages (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45650\"\u003e#45650\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/97a4b1bff84a6179a05b6c5840b3cc957ea2b637\"\u003e\u003ccode\u003e97a4b1b\u003c/code\u003e\u003c/a\u003e [Identity] Update changelog (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45683\"\u003e#45683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Azure/azure-sdk-for-python/compare/azure-storage-file-datalake_12.23.0...azure-storage-file-datalake_12.24.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastmcp` from 3.2.4 to 3.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1: Loop There It Is\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3.1 is a hotfix for the 3.3 packaging split. Clean installs of 3.3.0 could fail on standalone component imports like \u003ccode\u003efrom fastmcp.tools import tool\u003c/code\u003e because component modules reached auth and task primitives through \u003ccode\u003efastmcp.server\u003c/code\u003e, pulling in the server/provider stack and exposing a circular import.\u003c/p\u003e\n\u003cp\u003eComponent-level auth and task primitives now live in lightweight utility modules, with the old server import paths preserved as compatibility re-exports. Component imports stay lightweight, existing server-facing imports continue to work, and the release also includes small docs corrections from the 3.3 rollout.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(docs): use valid FA icon on client-only package page by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4139\"\u003ePrefectHQ/fastmcp#4139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecouple component imports from server by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4150\"\u003ePrefectHQ/fastmcp#4150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.3.0: Slim Reaper\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3 ships \u003ccode\u003efastmcp-slim\u003c/code\u003e, a new lightweight distribution that separates the client from the server stack. It also closes out a meaningful backlog of security hardening, observability improvements, and auth additions that accumulated through the 3.2 cycle.\u003c/p\u003e\n\u003ch2\u003efastmcp-slim\u003c/h2\u003e\n\u003cp\u003eThe full FastMCP package pulls in Starlette, Uvicorn, and the rest of the server machinery — necessary for running a server, but wasteful if you're writing a client, a script, or an agent that just needs to talk to MCP. \u003ccode\u003efastmcp-slim\u003c/code\u003e is a dependency-light distribution that ships the client and transport layer without any of that.\u003c/p\u003e\n\u003cp\u003eThe import namespace is unchanged:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom fastmcp import Client\n\u003cp\u003easync with Client(\u0026quot;\u003ca href=\"https://example.com/mcp\"\u003ehttps://example.com/mcp\u003c/a\u003e\u0026quot;) as client:\nresult = await client.call_tool(\u0026quot;my_tool\u0026quot;, {\u0026quot;arg\u0026quot;: \u0026quot;value\u0026quot;})\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eInstall \u003ccode\u003efastmcp-slim[client]\u003c/code\u003e anywhere you want FastMCP's client without the server footprint — CI environments, lightweight agents, library dependencies that shouldn't force Uvicorn on downstream users.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003eThe OAuth proxy received three hardening upgrades. Silent consent is now guarded against AS-in-the-middle attacks — a malicious authorization server can no longer silently approve a consent it wasn't meant to handle. Redirect URI allowlist matching now rejects dot-segment paths (\u003ccode\u003e/../\u003c/code\u003e, \u003ccode\u003e/./\u003c/code\u003e) that could otherwise bypass prefix checks. And \u003ccode\u003eResponseCachingMiddleware\u003c/code\u003e partitions its cache by access token, closing a gap where different users could see each other's cached responses.\u003c/p\u003e\n\u003ch2\u003eAuth\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eAzureB2CProvider\u003c/code\u003e adds first-class support for Azure AD B2C user flows. The OCI provider is fixed for 3.x installs. And \u003ccode\u003eOAuthProxy\u003c/code\u003e gains a public \u003ccode\u003eupdate_scopes()\u003c/code\u003e API for updating the proxy's required scopes after initialization — useful for servers that determine scope requirements at runtime.\u003c/p\u003e\n\u003ch2\u003eObservability\u003c/h2\u003e\n\u003cp\u003eOTEL instrumentation is now fully compliant with MCP semantic conventions. List operations (\u003ccode\u003elist_tools\u003c/code\u003e, \u003ccode\u003elist_resources\u003c/code\u003e, \u003ccode\u003elist_prompts\u003c/code\u003e, \u003ccode\u003elist_resource_templates\u003c/code\u003e) are instrumented, and delegate spans on proxy servers are enriched with backend attributes.\u003c/p\u003e\n\u003ch2\u003eThread Affinity\u003c/h2\u003e\n\u003cp\u003eSync tools run in a thread pool by default. If your tool holds thread-local state or is bound to a specific thread (UI frameworks, some database drivers), you can now opt out:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/d8dcc273cac9f6f17889a1b60adbdc654f948a50\"\u003e\u003ccode\u003ed8dcc27\u003c/code\u003e\u003c/a\u003e Decouple component imports from server (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4150\"\u003e#4150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/255e3e491082d8fbaeb3ccf25be6983cbab8b657\"\u003e\u003ccode\u003e255e3e4\u003c/code\u003e\u003c/a\u003e fix(docs): use valid FA icon on client-only package page (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4139\"\u003e#4139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/73df4dcaeeba6f985607f633786d38db6caf23f7\"\u003e\u003ccode\u003e73df4dc\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4096\"\u003e#4096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/ee48a0fd6e077e1c32e996f7b51fd442e31c514f\"\u003e\u003ccode\u003eee48a0f\u003c/code\u003e\u003c/a\u003e Refine fastmcp-slim packaging (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4125\"\u003e#4125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/bb4894d2159cd10f0c07f038db9c56b14fb99586\"\u003e\u003ccode\u003ebb4894d\u003c/code\u003e\u003c/a\u003e Add fastmcp-slim for client-only installs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4122\"\u003e#4122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/8209093871af25bc3ceb50bfbcec317632218afd\"\u003e\u003ccode\u003e8209093\u003c/code\u003e\u003c/a\u003e fix(http): terminate active streamable-HTTP transports before lifespan shutdo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/cf59a4511ff1980fd932215ef886e665c829bdbf\"\u003e\u003ccode\u003ecf59a45\u003c/code\u003e\u003c/a\u003e Fix OCI Provider issue in 3.x version. Add OCI auth provider example … (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4116\"\u003e#4116\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/89b99ecfb987781735295869d2e3d620dde7af4c\"\u003e\u003ccode\u003e89b99ec\u003c/code\u003e\u003c/a\u003e fix(proxy): fall back to live identifier for backend_* span attributes (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4109\"\u003e#4109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/310314cf149a18d0a76e5703ee98f80ffb035171\"\u003e\u003ccode\u003e310314c\u003c/code\u003e\u003c/a\u003e fix: cli option --no-banner is NOT passed to cli but server-spec in-correctly...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/28722f846a0319913a4a7b67dd65131d615214b6\"\u003e\u003ccode\u003e28722f8\u003c/code\u003e\u003c/a\u003e fix: drop exc_info for expected tool failures, remove unreachable ValidationE...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.2.4...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `numpy` from 2.4.4 to 2.4.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numpy/numpy/releases\"\u003enumpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.4.6 (May 18, 2026)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.6 Release Notes\u003c/h1\u003e\n\u003cp\u003eNumPy 2.4.6 is a quick release that fixes a regression discovered in the 2.4.5\nrelease.\u003c/p\u003e\n\u003cp\u003eThis release supports Python versions 3.11-3.14\u003c/p\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eA total of 4 people contributed to this release. People with a \u0026quot;+\u0026quot; by their\nnames contributed a patch for the first time.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e!EarlMilktea\u003c/li\u003e\n\u003cli\u003eCharles Harris\u003c/li\u003e\n\u003cli\u003eSebastian Berg\u003c/li\u003e\n\u003cli\u003eWarren Weckesser\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePull requests merged\u003c/h2\u003e\n\u003cp\u003eA total of 4 pull requests were merged for this release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/31444\"\u003e#31444\u003c/a\u003e: MAINT: Prepare 2.4.x for further development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/31453\"\u003e#31453\u003c/a\u003e: BUG: Fix regression in \u003ccode\u003earr.conj()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/31459\"\u003e#31459\u003c/a\u003e: BUG: \u003ccode\u003enp.linalg.svd(..., hermitian=True)\u003c/code\u003e returns non-unitary...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/31460\"\u003e#31460\u003c/a\u003e: BUG: Don't call INCREF/DECREF on descr in NpyStringAcquireAllocator...\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.5 (May 15, 2026)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.5 Release Notes\u003c/h1\u003e\n\u003cp\u003eNumPy 2.4.5 is a patch release that fixes bugs discovered after the 2.4.4\nrelease, has some typing improvements, and maintains infrastructure.\u003c/p\u003e\n\u003cp\u003eThis release supports Python versions 3.11-3.14\u003c/p\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eA total of 17 people contributed to this release. People with a \u0026quot;+\u0026quot; by their\nnames contributed a patch for the first time.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAleksei Nikiforov\u003c/li\u003e\n\u003cli\u003eAnarion Zuo +\u003c/li\u003e\n\u003cli\u003eAnkit Ahlawat\u003c/li\u003e\n\u003cli\u003eBreno Favaretto +\u003c/li\u003e\n\u003cli\u003eCharles Harris\u003c/li\u003e\n\u003cli\u003eIgor Krivenko +\u003c/li\u003e\n\u003cli\u003eIjtihed Kilani +\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eMaarten Baert +\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/b832a09cf2a169c833dd2371e7c07aa00b293242\"\u003e\u003ccode\u003eb832a09\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/31462\"\u003e#31462\u003c/a\u003e from charris/prepare-2.4.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/57cc147d2ceacffc6534642bfbdebb3a80428e1e\"\u003e\u003ccode\u003e57cc147\u003c/code\u003e\u003c/a\u003e REL: Prepare for the NumPy 2.4.6 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/0c72b0b53b6b83c004e434b2c7855e73c000d21e\"\u003e\u003ccode\u003e0c72b0b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/31459\"\u003e#31459\u003c/a\u003e from charris/backport-31347\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/9778d26e0475d381ccb7817c3b4dd8cacef2b9eb\"\u003e\u003ccode\u003e9778d26\u003c/code\u003e\u003c/a\u003e BUG: core: Don't call INCREF/DECREF on descr in NpyStringAcquireAllocator. (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/e0e38767d5d0f848ab44befeedcad71e8ef589c7\"\u003e\u003ccode\u003ee0e3876\u003c/code\u003e\u003c/a\u003e BUG: core: Don't call INCREF/DECREF on descr in NpyStringAcquireAllocator. (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/d1bffeb9ec4ec0bf029c94ea35abffa92d5c30f2\"\u003e\u003ccode\u003ed1bffeb\u003c/code\u003e\u003c/a\u003e BUG: \u003ccode\u003enp.linalg.svd(..., hermitian=True)\u003c/code\u003e returns non-unitary \u003ccode\u003evh\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/31347\"\u003e#31347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/8d8d7e5a14a1da0bfb0faf609a7a7610c431e6e9\"\u003e\u003ccode\u003e8d8d7e5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/31453\"\u003e#31453\u003c/a\u003e from seberg/issue-31452\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/bddaab7ace45f90148d8f2bb6e67daab2d45ec76\"\u003e\u003ccode\u003ebddaab7\u003c/code\u003e\u003c/a\u003e BUG: Fix regression in \u003ccode\u003earr.conj()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/37a1ecca8dff09b2c579a991194ac55b9971f3a7\"\u003e\u003ccode\u003e37a1ecc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/31444\"\u003e#31444\u003c/a\u003e from charris/begin-2.4.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/3c0e043217a759a8a948ade158fec14348c3b459\"\u003e\u003ccode\u003e3c0e043\u003c/code\u003e\u003c/a\u003e MAINT: Prepare 2.4.x for further development\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/numpy/numpy/compare/v2.4.4...v2.4.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pymdown-extensions` from 10.21.2 to 10.21.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facelessuser/pymdown-extensions/releases\"\u003epymdown-extensions's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e10.21.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Fix regression that allows a snippet to be loaded outside of the base path using directory traversal when\n\u003ccode\u003erestrict_base_path\u003c/code\u003e is enabled (the default). Found by \u003ca href=\"https://github.com/gistrec\"\u003e\u003ccode\u003e@​gistrec\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/pymdown-extensions/commit/42628414c6591b1a1ce211157090783e3b2242d6\"\u003e\u003ccode\u003e4262841\u003c/code\u003e\u003c/a\u003e Fix spelling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/pymdown-extensions/commit/63b7835776d703d6c339cf2110d9888f676efc0c\"\u003e\u003ccode\u003e63b7835\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/pymdown-extensions/commit/3d185501daaa1424c4a8d42124112c44ef6ab635\"\u003e\u003ccode\u003e3d18550\u003c/code\u003e\u003c/a\u003e Docs: update js deps\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/facelessuser/pymdown-extensions/compare/10.21.2...10.21.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/atlanhq/application-sdk/pull/1806","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/atlanhq%2Fapplication-sdk/issues/1806","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1806/packages"},{"uuid":"4474522459","node_id":"PR_kwDOO4MTNc7c7BZE","number":432,"state":"open","title":"deps(deps): bump the python-minor-and-patch group across 1 directory with 6 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-19T04:56:08.000Z","updated_at":"2026-05-19T04:56:08.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps): bump","group_name":"python-minor-and-patch","update_count":6,"packages":[{"name":"uv","old_version":"0.11.12","new_version":"0.11.15","repository_url":"https://github.com/astral-sh/uv"},{"name":"fastmcp","old_version":"3.2.4","new_version":"3.3.1","repository_url":"https://github.com/PrefectHQ/fastmcp"},{"name":"openai","old_version":"2.36.0","new_version":"2.37.0","repository_url":"https://github.com/openai/openai-python"},{"name":"click","old_version":"8.3.3","new_version":"8.4.0","repository_url":"https://github.com/pallets/click"},{"name":"pymdown-extensions","old_version":"10.21.2","new_version":"10.21.3","repository_url":"https://github.com/facelessuser/pymdown-extensions"},{"name":"mkdocs-git-revision-date-localized-plugin","old_version":"1.5.1","new_version":"1.5.2","repository_url":"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-and-patch group with 6 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [uv](https://github.com/astral-sh/uv) | `0.11.12` | `0.11.15` |\n| [fastmcp](https://github.com/PrefectHQ/fastmcp) | `3.2.4` | `3.3.1` |\n| [openai](https://github.com/openai/openai-python) | `2.36.0` | `2.37.0` |\n| [click](https://github.com/pallets/click) | `8.3.3` | `8.4.0` |\n| [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) | `10.21.2` | `10.21.3` |\n| [mkdocs-git-revision-date-localized-plugin](https://github.com/timvink/mkdocs-git-revision-date-localized-plugin) | `1.5.1` | `1.5.2` |\n\n\nUpdates `uv` from 0.11.12 to 0.11.15\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/uv/releases\"\u003euv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.11.15\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-18.\u003c/p\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a TAR parser differential, see \u003ca href=\"https://github.com/astral-sh/tokio-tar/security/advisories/GHSA-3cv2-h65g-fgmm\"\u003eGHSA-3cv2-h65g-fgmm\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19463\"\u003e#19463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforce that entry points cannot escape in the scripts directory, see \u003ca href=\"https://github.com/astral-sh/uv/security/advisories/GHSA-4gg8-gxpx-9rph\"\u003eGHSA-4gg8-gxpx-9rph\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19464\"\u003e#19464\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML v1.1 -\u0026gt; v1.0 backwards compatibility for source distributions (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18741\"\u003e#18741\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for Azure request signing (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19421\"\u003e#19421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eApply stricter validation to all wheel filename segments (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19364\"\u003e#19364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject empty strings as an invalid package name (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19435\"\u003e#19435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse structured errors for signing authentication failures (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19422\"\u003e#19422\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003euv audit: Add JSON output (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19305\"\u003e#19305\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect \u003ccode\u003erequired-environments\u003c/code\u003e in \u003ccode\u003euv pip compile\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19378\"\u003e#19378\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid parsing JSON manifest when local Python is available (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19398\"\u003e#19398\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid walking nested directories in linker conflict registration (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19382\"\u003e#19382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize async wheel ZIP writing (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19383\"\u003e#19383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix dead \u0026quot;already trimmed\u0026quot; fast-path in \u003ccode\u003eVersion::only_release_trimmed\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19425\"\u003e#19425\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eApply workspace-member \u003ccode\u003e[tool.uv.sources]\u003c/code\u003e credentials under \u003ccode\u003euv sync --frozen\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19423\"\u003e#19423\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSkip empty directories in uv build outputs (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19437\"\u003e#19437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Git submodule handling when using relative paths (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/12156\"\u003e#12156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix line number reporting in netrc parsing (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19452\"\u003e#19452\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMove Bazel auth helper setup into integration guide (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19392\"\u003e#19392\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall uv 0.11.15\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.11.15/uv-installer.sh | sh\r\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/uv/blob/main/CHANGELOG.md\"\u003euv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.11.15\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-18.\u003c/p\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a TAR parser differential, see \u003ca href=\"https://github.com/astral-sh/tokio-tar/security/advisories/GHSA-3cv2-h65g-fgmm\"\u003eGHSA-3cv2-h65g-fgmm\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19463\"\u003e#19463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforce that entry points cannot escape in the scripts directory, see \u003ca href=\"https://github.com/astral-sh/uv/security/advisories/GHSA-4gg8-gxpx-9rph\"\u003eGHSA-4gg8-gxpx-9rph\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19464\"\u003e#19464\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML v1.1 -\u0026gt; v1.0 backwards compatibility for source distributions (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18741\"\u003e#18741\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for Azure request signing (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19421\"\u003e#19421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eApply stricter validation to all wheel filename segments (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19364\"\u003e#19364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject empty strings as an invalid package name (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19435\"\u003e#19435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse structured errors for signing authentication failures (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19422\"\u003e#19422\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003euv audit: Add JSON output (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19305\"\u003e#19305\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect \u003ccode\u003erequired-environments\u003c/code\u003e in \u003ccode\u003euv pip compile\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19378\"\u003e#19378\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid parsing JSON manifest when local Python is available (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19398\"\u003e#19398\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid walking nested directories in linker conflict registration (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19382\"\u003e#19382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize async wheel ZIP writing (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19383\"\u003e#19383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix dead \u0026quot;already trimmed\u0026quot; fast-path in \u003ccode\u003eVersion::only_release_trimmed\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19425\"\u003e#19425\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eApply workspace-member \u003ccode\u003e[tool.uv.sources]\u003c/code\u003e credentials under \u003ccode\u003euv sync --frozen\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19423\"\u003e#19423\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSkip empty directories in uv build outputs (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19437\"\u003e#19437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Git submodule handling when using relative paths (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/12156\"\u003e#12156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix line number reporting in netrc parsing (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19452\"\u003e#19452\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMove Bazel auth helper setup into integration guide (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19392\"\u003e#19392\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.11.14\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-12.\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Astral mirror URL override (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19206\"\u003e#19206\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/3cffe97c2e48c9e49422c738da3af95919dd0bf5\"\u003e\u003ccode\u003e3cffe97\u003c/code\u003e\u003c/a\u003e Fix crates.io publish script lockfile (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/19473\"\u003e#19473\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/de16a7b1a30c54e3137db0d414ff250a1c0ae427\"\u003e\u003ccode\u003ede16a7b\u003c/code\u003e\u003c/a\u003e Bump version to 0.11.15 (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/19472\"\u003e#19472\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/cf826cc4e0feeafb23e4e52b85929848ab2d16a7\"\u003e\u003ccode\u003ecf826cc\u003c/code\u003e\u003c/a\u003e Disable \u003ccode\u003etest_simultaneous_create_set_then_move\u003c/code\u003e on Linux (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/19469\"\u003e#19469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/2d566bced5152ba9da3aedbc02f1dd087bfeb8e9\"\u003e\u003ccode\u003e2d566bc\u003c/code\u003e\u003c/a\u003e Allow retry of \u003ccode\u003ecustom-publish-crates\u003c/code\u003e separately from \u003ccode\u003eannounce\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/19470\"\u003e#19470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/0588b8fb3505235ed97fc511a874a3ce0cbd9b72\"\u003e\u003ccode\u003e0588b8f\u003c/code\u003e\u003c/a\u003e Run release builds on maturin version bumps in CI (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/19466\"\u003e#19466\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/9a65753e9a8d0e99e7079114d78001311444c718\"\u003e\u003ccode\u003e9a65753\u003c/code\u003e\u003c/a\u003e Enforce that entry points cannot escape in the scripts directory (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/19464\"\u003e#19464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/d77d849816de6278f61d3f385b70b2735ca2f0fd\"\u003e\u003ccode\u003ed77d849\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Update maturin to v1.13.2 (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/19445\"\u003e#19445\u003c/a\u003e)\u0026quot; (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/19465\"\u003e#19465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/5373e96b15609291995a630704ef08cea31b4b08\"\u003e\u003ccode\u003e5373e96\u003c/code\u003e\u003c/a\u003e Update Rust crate rustls to v0.23.40 (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/19250\"\u003e#19250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/fb8d3d46ac08ab5fc88f7a96c89f55860f343012\"\u003e\u003ccode\u003efb8d3d4\u003c/code\u003e\u003c/a\u003e Update Rust crate rustls-pki-types to v1.14.1 (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/19251\"\u003e#19251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/078480dc40fdc6d2e56145730dacfb2744da5940\"\u003e\u003ccode\u003e078480d\u003c/code\u003e\u003c/a\u003e Configure maturin and uv so \u003ccode\u003euv run\u003c/code\u003e can be used to work on uv itself (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/19461\"\u003e#19461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/uv/compare/0.11.12...0.11.15\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastmcp` from 3.2.4 to 3.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1: Loop There It Is\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3.1 is a hotfix for the 3.3 packaging split. Clean installs of 3.3.0 could fail on standalone component imports like \u003ccode\u003efrom fastmcp.tools import tool\u003c/code\u003e because component modules reached auth and task primitives through \u003ccode\u003efastmcp.server\u003c/code\u003e, pulling in the server/provider stack and exposing a circular import.\u003c/p\u003e\n\u003cp\u003eComponent-level auth and task primitives now live in lightweight utility modules, with the old server import paths preserved as compatibility re-exports. Component imports stay lightweight, existing server-facing imports continue to work, and the release also includes small docs corrections from the 3.3 rollout.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(docs): use valid FA icon on client-only package page by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4139\"\u003ePrefectHQ/fastmcp#4139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecouple component imports from server by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4150\"\u003ePrefectHQ/fastmcp#4150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.3.0: Slim Reaper\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3 ships \u003ccode\u003efastmcp-slim\u003c/code\u003e, a new lightweight distribution that separates the client from the server stack. It also closes out a meaningful backlog of security hardening, observability improvements, and auth additions that accumulated through the 3.2 cycle.\u003c/p\u003e\n\u003ch2\u003efastmcp-slim\u003c/h2\u003e\n\u003cp\u003eThe full FastMCP package pulls in Starlette, Uvicorn, and the rest of the server machinery — necessary for running a server, but wasteful if you're writing a client, a script, or an agent that just needs to talk to MCP. \u003ccode\u003efastmcp-slim\u003c/code\u003e is a dependency-light distribution that ships the client and transport layer without any of that.\u003c/p\u003e\n\u003cp\u003eThe import namespace is unchanged:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom fastmcp import Client\n\u003cp\u003easync with Client(\u0026quot;\u003ca href=\"https://example.com/mcp\"\u003ehttps://example.com/mcp\u003c/a\u003e\u0026quot;) as client:\nresult = await client.call_tool(\u0026quot;my_tool\u0026quot;, {\u0026quot;arg\u0026quot;: \u0026quot;value\u0026quot;})\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eInstall \u003ccode\u003efastmcp-slim[client]\u003c/code\u003e anywhere you want FastMCP's client without the server footprint — CI environments, lightweight agents, library dependencies that shouldn't force Uvicorn on downstream users.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003eThe OAuth proxy received three hardening upgrades. Silent consent is now guarded against AS-in-the-middle attacks — a malicious authorization server can no longer silently approve a consent it wasn't meant to handle. Redirect URI allowlist matching now rejects dot-segment paths (\u003ccode\u003e/../\u003c/code\u003e, \u003ccode\u003e/./\u003c/code\u003e) that could otherwise bypass prefix checks. And \u003ccode\u003eResponseCachingMiddleware\u003c/code\u003e partitions its cache by access token, closing a gap where different users could see each other's cached responses.\u003c/p\u003e\n\u003ch2\u003eAuth\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eAzureB2CProvider\u003c/code\u003e adds first-class support for Azure AD B2C user flows. The OCI provider is fixed for 3.x installs. And \u003ccode\u003eOAuthProxy\u003c/code\u003e gains a public \u003ccode\u003eupdate_scopes()\u003c/code\u003e API for updating the proxy's required scopes after initialization — useful for servers that determine scope requirements at runtime.\u003c/p\u003e\n\u003ch2\u003eObservability\u003c/h2\u003e\n\u003cp\u003eOTEL instrumentation is now fully compliant with MCP semantic conventions. List operations (\u003ccode\u003elist_tools\u003c/code\u003e, \u003ccode\u003elist_resources\u003c/code\u003e, \u003ccode\u003elist_prompts\u003c/code\u003e, \u003ccode\u003elist_resource_templates\u003c/code\u003e) are instrumented, and delegate spans on proxy servers are enriched with backend attributes.\u003c/p\u003e\n\u003ch2\u003eThread Affinity\u003c/h2\u003e\n\u003cp\u003eSync tools run in a thread pool by default. If your tool holds thread-local state or is bound to a specific thread (UI frameworks, some database drivers), you can now opt out:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/d8dcc273cac9f6f17889a1b60adbdc654f948a50\"\u003e\u003ccode\u003ed8dcc27\u003c/code\u003e\u003c/a\u003e Decouple component imports from server (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4150\"\u003e#4150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/255e3e491082d8fbaeb3ccf25be6983cbab8b657\"\u003e\u003ccode\u003e255e3e4\u003c/code\u003e\u003c/a\u003e fix(docs): use valid FA icon on client-only package page (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4139\"\u003e#4139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/73df4dcaeeba6f985607f633786d38db6caf23f7\"\u003e\u003ccode\u003e73df4dc\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4096\"\u003e#4096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/ee48a0fd6e077e1c32e996f7b51fd442e31c514f\"\u003e\u003ccode\u003eee48a0f\u003c/code\u003e\u003c/a\u003e Refine fastmcp-slim packaging (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4125\"\u003e#4125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/bb4894d2159cd10f0c07f038db9c56b14fb99586\"\u003e\u003ccode\u003ebb4894d\u003c/code\u003e\u003c/a\u003e Add fastmcp-slim for client-only installs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4122\"\u003e#4122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/8209093871af25bc3ceb50bfbcec317632218afd\"\u003e\u003ccode\u003e8209093\u003c/code\u003e\u003c/a\u003e fix(http): terminate active streamable-HTTP transports before lifespan shutdo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/cf59a4511ff1980fd932215ef886e665c829bdbf\"\u003e\u003ccode\u003ecf59a45\u003c/code\u003e\u003c/a\u003e Fix OCI Provider issue in 3.x version. Add OCI auth provider example … (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4116\"\u003e#4116\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/89b99ecfb987781735295869d2e3d620dde7af4c\"\u003e\u003ccode\u003e89b99ec\u003c/code\u003e\u003c/a\u003e fix(proxy): fall back to live identifier for backend_* span attributes (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4109\"\u003e#4109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/310314cf149a18d0a76e5703ee98f80ffb035171\"\u003e\u003ccode\u003e310314c\u003c/code\u003e\u003c/a\u003e fix: cli option --no-banner is NOT passed to cli but server-spec in-correctly...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/28722f846a0319913a4a7b67dd65131d615214b6\"\u003e\u003ccode\u003e28722f8\u003c/code\u003e\u003c/a\u003e fix: drop exc_info for expected tool failures, remove unreachable ValidationE...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.2.4...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openai` from 2.36.0 to 2.37.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/openai/openai-python/releases\"\u003eopenai's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.37.0\u003c/h2\u003e\n\u003ch2\u003e2.37.0 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.36.0...v2.37.0\"\u003ev2.36.0...v2.37.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add service_tier parameter to responses compact method (\u003ca href=\"https://github.com/openai/openai-python/commit/625827c5509ece3c40e5002be37a9bd9d91b5374\"\u003e625827c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal/types:\u003c/strong\u003e support eagerly validating pydantic iterators (\u003ca href=\"https://github.com/openai/openai-python/commit/7e527bc927cc58b74d7619abf7f1fbcfff8bddfa\"\u003e7e527bc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unnecessary client_id when using workload identity provider for auth (\u003ca href=\"https://github.com/openai/openai-python/commit/c39ea8d12a010052d7f02cebe8daabd2d1f89597\"\u003ec39ea8d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add missing f-string prefix in file type error message (\u003ca href=\"https://github.com/openai/openai-python/commit/c85ebd935cb4b80e7e97ce255437684f6411fb00\"\u003ec85ebd9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/openai/openai-python/blob/main/CHANGELOG.md\"\u003eopenai's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.37.0 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.36.0...v2.37.0\"\u003ev2.36.0...v2.37.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add service_tier parameter to responses compact method (\u003ca href=\"https://github.com/openai/openai-python/commit/625827c5509ece3c40e5002be37a9bd9d91b5374\"\u003e625827c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal/types:\u003c/strong\u003e support eagerly validating pydantic iterators (\u003ca href=\"https://github.com/openai/openai-python/commit/7e527bc927cc58b74d7619abf7f1fbcfff8bddfa\"\u003e7e527bc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unnecessary client_id when using workload identity provider for auth (\u003ca href=\"https://github.com/openai/openai-python/commit/c39ea8d12a010052d7f02cebe8daabd2d1f89597\"\u003ec39ea8d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add missing f-string prefix in file type error message (\u003ca href=\"https://github.com/openai/openai-python/commit/c85ebd935cb4b80e7e97ce255437684f6411fb00\"\u003ec85ebd9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/658be644f48028ea3c7b1545034470fda75a70ba\"\u003e\u003ccode\u003e658be64\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3213\"\u003e#3213\u003c/a\u003e from openai/release-please--branches--main--changes-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/8a7cac34cbc64fe02854beb3659f4bb5f46815f9\"\u003e\u003ccode\u003e8a7cac3\u003c/code\u003e\u003c/a\u003e release: 2.37.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/9b4bf8edbac6aab217f1ac4436a47cbca2cad43b\"\u003e\u003ccode\u003e9b4bf8e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/openai/openai-python/issues/1903\"\u003e#1903\u003c/a\u003e from stainless-sdks/dev/jtian/remove-unnecessary-params\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/c39ea8d12a010052d7f02cebe8daabd2d1f89597\"\u003e\u003ccode\u003ec39ea8d\u003c/code\u003e\u003c/a\u003e feat: Remove unnecessary client_id when using workload identity provider for ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/7e527bc927cc58b74d7619abf7f1fbcfff8bddfa\"\u003e\u003ccode\u003e7e527bc\u003c/code\u003e\u003c/a\u003e feat(internal/types): support eagerly validating pydantic iterators\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/625827c5509ece3c40e5002be37a9bd9d91b5374\"\u003e\u003ccode\u003e625827c\u003c/code\u003e\u003c/a\u003e feat(api): add service_tier parameter to responses compact method\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/c85ebd935cb4b80e7e97ce255437684f6411fb00\"\u003e\u003ccode\u003ec85ebd9\u003c/code\u003e\u003c/a\u003e fix(client): add missing f-string prefix in file type error message\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/openai/openai-python/compare/v2.36.0...v2.37.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.3.3 to 8.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.4.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.4.0/\"\u003ehttps://pypi.org/project/click/8.4.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-4-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-4-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/30\"\u003ehttps://github.com/pallets/click/milestone/30\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eParamType\u003c/code\u003e typing improvements. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3371\"\u003e#3371\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParamType\u003c/code\u003e is now a generic abstract base class,\nparameterized by its converted value type.\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.convert\u003c/code\u003e return types are narrowed on all\nconcrete types (\u003ccode\u003estr\u003c/code\u003e for :class:\u003ccode\u003eSTRING\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e for\n:class:\u003ccode\u003eINT\u003c/code\u003e, etc.).\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.to_info_dict\u003c/code\u003e returns specific\n:class:\u003ccode\u003e~typing.TypedDict\u003c/code\u003e subclasses instead of\n\u003ccode\u003edict[str, Any]\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:class:\u003ccode\u003eCompositeParamType\u003c/code\u003e and the number-range base are now\ngeneric with abstract methods.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRefactor \u003ccode\u003econvert_type\u003c/code\u003e to extract type inference into a private\n\u003ccode\u003e_guess_type\u003c/code\u003e helper, and add :func:\u003ccode\u003etyping.overload\u003c/code\u003e signatures.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3372\"\u003e#3372\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eParameter\u003c/code\u003e typing improvements. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2805\"\u003e#2805\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParameter\u003c/code\u003e is now an abstract base class, making explicit\nthat it cannot be instantiated directly.\u003c/li\u003e\n\u003cli\u003e:attr:\u003ccode\u003eParameter.name\u003c/code\u003e is now \u003ccode\u003estr\u003c/code\u003e instead of \u003ccode\u003estr | None\u003c/code\u003e.\nWhen \u003ccode\u003eexpose_value=False\u003c/code\u003e, the name is set to \u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e instead\nof \u003ccode\u003eNone\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ectx\u003c/code\u003e parameter of :meth:\u003ccode\u003eParameter.get_error_hint\u003c/code\u003e is now\ntyped as \u003ccode\u003eContext | None\u003c/code\u003e, matching the runtime behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSplit string values from \u003ccode\u003edefault_map\u003c/code\u003e for parameters with \u003ccode\u003enargs \u0026gt; 1\u003c/code\u003e\nor :class:\u003ccode\u003eTuple\u003c/code\u003e type, matching environment variable behavior.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2745\"\u003e#2745\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3364\"\u003e#3364\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAuto-detect \u003ccode\u003etype=UNPROCESSED\u003c/code\u003e for \u003ccode\u003eflag_value\u003c/code\u003e of non-basic types\n(not \u003ccode\u003estr\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e, \u003ccode\u003efloat\u003c/code\u003e, or \u003ccode\u003ebool\u003c/code\u003e), so programmer-provided\nPython objects like classes and enum members are passed through unchanged\ninstead of being stringified. Previously \u003ccode\u003etype=click.UNPROCESSED\u003c/code\u003e had\nto be set explicitly. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2012\"\u003e#2012\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3363\"\u003e#3363\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe error hint now uses \u003ccode\u003eCommand.get_help_option_names\u003c/code\u003e to pick\nnon-shadowed help option names, so \u003ccode\u003eTry '... -h'\u003c/code\u003e no longer points to a\nsubcommand option that shadows \u003ccode\u003e-h\u003c/code\u003e. All surviving names are shown\n(\u003ccode\u003e-h/--help\u003c/code\u003e). \u003ca href=\"https://redirect.github.com/pallets/click/issues/2790\"\u003e#2790\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3208\"\u003e#3208\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix readline functionality on non-Windows platforms. Prompt text is now\npassed directly to readline instead of being printed separately, allowing\nproper backspace, line editing, and line wrapping behavior. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2968\"\u003e#2968\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.4.0\u003c/h2\u003e\n\u003cp\u003eReleased 2026-05-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e:class:\u003ccode\u003eParamType\u003c/code\u003e typing improvements. :pr:\u003ccode\u003e3371\u003c/code\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParamType\u003c/code\u003e is now a generic abstract base class,\nparameterized by its converted value type.\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.convert\u003c/code\u003e return types are narrowed on all\nconcrete types (\u003ccode\u003estr\u003c/code\u003e for :class:\u003ccode\u003eSTRING\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e for\n:class:\u003ccode\u003eINT\u003c/code\u003e, etc.).\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.to_info_dict\u003c/code\u003e returns specific\n:class:\u003ccode\u003e~typing.TypedDict\u003c/code\u003e subclasses instead of\n\u003ccode\u003edict[str, Any]\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:class:\u003ccode\u003eCompositeParamType\u003c/code\u003e and the number-range base are now\ngeneric with abstract methods.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRefactor \u003ccode\u003econvert_type\u003c/code\u003e to extract type inference into a private\n\u003ccode\u003e_guess_type\u003c/code\u003e helper, and add :func:\u003ccode\u003etyping.overload\u003c/code\u003e signatures.\n:pr:\u003ccode\u003e3372\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e:class:\u003ccode\u003eParameter\u003c/code\u003e typing improvements. :pr:\u003ccode\u003e2805\u003c/code\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParameter\u003c/code\u003e is now an abstract base class, making explicit\nthat it cannot be instantiated directly.\u003c/li\u003e\n\u003cli\u003e:attr:\u003ccode\u003eParameter.name\u003c/code\u003e is now \u003ccode\u003estr\u003c/code\u003e instead of \u003ccode\u003estr | None\u003c/code\u003e.\nWhen \u003ccode\u003eexpose_value=False\u003c/code\u003e, the name is set to \u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e instead\nof \u003ccode\u003eNone\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ectx\u003c/code\u003e parameter of :meth:\u003ccode\u003eParameter.get_error_hint\u003c/code\u003e is now\ntyped as \u003ccode\u003eContext | None\u003c/code\u003e, matching the runtime behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSplit string values from \u003ccode\u003edefault_map\u003c/code\u003e for parameters with \u003ccode\u003enargs \u0026gt; 1\u003c/code\u003e\nor :class:\u003ccode\u003eTuple\u003c/code\u003e type, matching environment variable behavior.\n:issue:\u003ccode\u003e2745\u003c/code\u003e :pr:\u003ccode\u003e3364\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAuto-detect \u003ccode\u003etype=UNPROCESSED\u003c/code\u003e for \u003ccode\u003eflag_value\u003c/code\u003e of non-basic types\n(not \u003ccode\u003estr\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e, \u003ccode\u003efloat\u003c/code\u003e, or \u003ccode\u003ebool\u003c/code\u003e), so programmer-provided\nPython objects like classes and enum members are passed through unchanged\ninstead of being stringified. Previously \u003ccode\u003etype=click.UNPROCESSED\u003c/code\u003e had\nto be set explicitly. :issue:\u003ccode\u003e2012\u003c/code\u003e :pr:\u003ccode\u003e3363\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe error hint now uses :meth:\u003ccode\u003eCommand.get_help_option_names\u003c/code\u003e to pick\nnon-shadowed help option names, so \u003ccode\u003eTry '... -h'\u003c/code\u003e no longer points to a\nsubcommand option that shadows \u003ccode\u003e-h\u003c/code\u003e. All surviving names are shown\n(\u003ccode\u003e-h/--help\u003c/code\u003e). :issue:\u003ccode\u003e2790\u003c/code\u003e :pr:\u003ccode\u003e3208\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix readline functionality on non-Windows platforms. Prompt text is now\npassed directly to readline instead of being printed separately, allowing\nproper backspace, line editing, and line wrapping behavior. :issue:\u003ccode\u003e2968\u003c/code\u003e\n:pr:\u003ccode\u003e2969\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUse :func:\u003ccode\u003eos.startfile\u003c/code\u003e on Windows to open URLs in :func:\u003ccode\u003eopen_url\u003c/code\u003e,\nreplacing the \u003ccode\u003estart\u003c/code\u003e built-in which cannot be invoked without\n\u003ccode\u003eshell=True\u003c/code\u003e. :issue:\u003ccode\u003e3164\u003c/code\u003e :pr:\u003ccode\u003e3186\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix Fish shell completion errors when option help text contains newlines.\n:issue:\u003ccode\u003e3043\u003c/code\u003e :pr:\u003ccode\u003e3126\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/41f410fb7528305d7e87c8cfa704f6c2456f57fc\"\u003e\u003ccode\u003e41f410f\u003c/code\u003e\u003c/a\u003e Release 8.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e3e69e3bf8d749ac1a632f2ece4d38ec7f6588f5\"\u003e\u003ccode\u003ee3e69e3\u003c/code\u003e\u003c/a\u003e Add type annotations for instance attributes in \u003ccode\u003eutils\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3422\"\u003e#3422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/3bb230dcd5d751f8605b46e9df5a541639d5fd4e\"\u003e\u003ccode\u003e3bb230d\u003c/code\u003e\u003c/a\u003e WIP: Fix \u003ccode\u003eHelpFormatter.write_usage\u003c/code\u003e producing spurious characters (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3434\"\u003e#3434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/63274a79d08fdc5c19220696144489f7144a8547\"\u003e\u003ccode\u003e63274a7\u003c/code\u003e\u003c/a\u003e \u003ccode\u003eclick.get_pager_file\u003c/code\u003e: add tests (\u003ca href=\"https://redirect.github.com/pallets/click/issues/1572\"\u003e#1572\u003c/a\u003e followup) (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3405\"\u003e#3405\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/0551bf53588ae87f462d336f24f853a156fefe3a\"\u003e\u003ccode\u003e0551bf5\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eHelpFormatter.write_usage\u003c/code\u003e producing spurious characters\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/fc41aa1d0b62494eb93e92ff3929601221e3abf4\"\u003e\u003ccode\u003efc41aa1\u003c/code\u003e\u003c/a\u003e Apply class-body annotations to \u003ccode\u003eKeepOpenFile\u003c/code\u003e for consistency\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/b761eda3bad977ec2f485451d85fd8ec365f0bf4\"\u003e\u003ccode\u003eb761eda\u003c/code\u003e\u003c/a\u003e Skip some tests on Windows\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/98302ac4f49e443a48abd3fbb95c86202b89547d\"\u003e\u003ccode\u003e98302ac\u003c/code\u003e\u003c/a\u003e Check \u003ccode\u003ePAGER\u003c/code\u003e usage, color preservation and edge-cases\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/dbdae170879d460e78963f8af35c5cb9c5b86e89\"\u003e\u003ccode\u003edbdae17\u003c/code\u003e\u003c/a\u003e Fix documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/1aa2d53d63ff68bf14b35931177aac9270e39713\"\u003e\u003ccode\u003e1aa2d53\u003c/code\u003e\u003c/a\u003e Redesigned tests and get_pager_file branching to be more clear and not set color\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.3.3...8.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pymdown-extensions` from 10.21.2 to 10.21.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facelessuser/pymdown-extensions/releases\"\u003epymdown-extensions's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e10.21.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Fix regression that allows a snippet to be loaded outside of the base path using directory traversal when\n\u003ccode\u003erestrict_base_path\u003c/code\u003e is enabled (the default). Found by \u003ca href=\"https://github.com/gistrec\"\u003e\u003ccode\u003e@​gistrec\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/pymdown-extensions/commit/42628414c6591b1a1ce211157090783e3b2242d6\"\u003e\u003ccode\u003e4262841\u003c/code\u003e\u003c/a\u003e Fix spelling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/pymdown-extensions/commit/63b7835776d703d6c339cf2110d9888f676efc0c\"\u003e\u003ccode\u003e63b7835\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/pymdown-extensions/commit/3d185501daaa1424c4a8d42124112c44ef6ab635\"\u003e\u003ccode\u003e3d18550\u003c/code\u003e\u003c/a\u003e Docs: update js deps\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/facelessuser/pymdown-extensions/compare/10.21.2...10.21.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-git-revision-date-localized-plugin` from 1.5.1 to 1.5.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin/releases\"\u003emkdocs-git-revision-date-localized-plugin's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.5.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGuard against \u003ccode\u003epage is None\u003c/code\u003e in mkdocs theme override Jinja2 templates by \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/timvink/mkdocs-git-revision-date-localized-plugin/pull/202\"\u003etimvink/mkdocs-git-revision-date-localized-plugin#202\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependency updates (security)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump requests from 2.32.5 to 2.33.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/timvink/mkdocs-git-revision-date-localized-plugin/pull/203\"\u003etimvink/mkdocs-git-revision-date-localized-plugin#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pytest from 8.4.2 to 9.0.3 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/timvink/mkdocs-git-revision-date-localized-plugin/pull/204\"\u003etimvink/mkdocs-git-revision-date-localized-plugin#204\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump gitpython from 3.1.45 to 3.1.50 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/timvink/mkdocs-git-revision-date-localized-plugin/pull/205\"\u003etimvink/mkdocs-git-revision-date-localized-plugin#205\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/timvink/mkdocs-git-revision-date-localized-plugin/pull/207\"\u003etimvink/mkdocs-git-revision-date-localized-plugin#207\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/timvink/mkdocs-git-revision-date-localized-plugin/pull/208\"\u003etimvink/mkdocs-git-revision-date-localized-plugin#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pygments from 2.19.2 to 2.20.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/timvink/mkdocs-git-revision-date-localized-plugin/pull/206\"\u003etimvink/mkdocs-git-revision-date-localized-plugin#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump urllib3 from 2.6.3 to 2.7.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/timvink/mkdocs-git-revision-date-localized-plugin/pull/209\"\u003etimvink/mkdocs-git-revision-date-localized-plugin#209\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin/compare/v1.5.1...v1.5.2\"\u003ehttps://github.com/timvink/mkdocs-git-revision-date-localized-plugin/compare/v1.5.1...v1.5.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin/commit/2afa3d27caae49064ebc67a963df2b602b24f668\"\u003e\u003ccode\u003e2afa3d2\u003c/code\u003e\u003c/a\u003e Bump version to 1.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin/commit/66e9b7e64fc05861cc70cd67c37de6a2702f0d60\"\u003e\u003ccode\u003e66e9b7e\u003c/code\u003e\u003c/a\u003e Document release process in CONTRIBUTING.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin/commit/2fb507060bcd11a5d2b44f6089750f54059dc610\"\u003e\u003ccode\u003e2fb5070\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/timvink/mkdocs-git-revision-date-localized-plugin/issues/209\"\u003e#209\u003c/a\u003e from timvink/dependabot/uv/urllib3-2.7.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin/commit/d0bacc8bc5524fb2bd939f9ade1b1806261cbf58\"\u003e\u003ccode\u003ed0bacc8\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.6.3 to 2.7.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin/commit/ee28ad906f2c2c9da062d1ea9efebeb63803a1c0\"\u003e\u003ccode\u003eee28ad9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/timvink/mkdocs-git-revision-date-localized-plugin/issues/208\"\u003e#208\u003c/a\u003e from timvink/dependabot/uv/gitpython-3.1.50\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin/commit/befbdab4daa5bda82a70fc11edd4f29aad62da60\"\u003e\u003ccode\u003ebefbdab\u003c/code\u003e\u003c/a\u003e Bump gitpython from 3.1.49 to 3.1.50\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin/commit/5c654ac0e4d6f063f36c2c70529f3e0c1bfe4c0d\"\u003e\u003ccode\u003e5c654ac\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/timvink/mkdocs-git-revision-date-localized-plugin/issues/206\"\u003e#206\u003c/a\u003e from timvink/dependabot/uv/pygments-2.20.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin/commit/095abddb28086e78258b1d8f57fc92802a442eaf\"\u003e\u003ccode\u003e095abdd\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/timvink/mkdocs-git-revision-date-localized-plugin/issues/207\"\u003e#207\u003c/a\u003e from timvink/dependabot/uv/gitpython-3.1.49\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin/commit/27bab6c9a3ae4aa20f3d887c10cb46b4b1887972\"\u003e\u003ccode\u003e27bab6c\u003c/code\u003e\u003c/a\u003e Bump gitpython from 3.1.47 to 3.1.49\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin/commit/301037e98fce9d3223690865186ba0d135336b88\"\u003e\u003ccode\u003e301037e\u003c/code\u003e\u003c/a\u003e Bump pygments from 2.19.2 to 2.20.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin/compare/v1.5.1...v1.5.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/mbailey/voicemode/pull/432","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbailey%2Fvoicemode/issues/432","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/432/packages"},{"uuid":"4466499495","node_id":"PR_kwDOSQSa2M7chFhi","number":6,"state":"open","title":"deps: bump the python group across 1 directory with 5 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-18T05:29:21.000Z","updated_at":"2026-05-24T03:52:35.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps: bump","group_name":"python","update_count":5,"packages":[{"name":"fastmcp","old_version":"3.2.4","new_version":"3.3.1","repository_url":"https://github.com/PrefectHQ/fastmcp"},{"name":"uvicorn","old_version":"0.41.0","new_version":"0.47.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [fastmcp](https://github.com/PrefectHQ/fastmcp), [uvicorn](https://github.com/Kludex/uvicorn), [python-dotenv](https://github.com/theskumar/python-dotenv), [httpx](https://github.com/encode/httpx) and [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) to permit the latest version.\nUpdates `fastmcp` from 3.2.4 to 3.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1: Loop There It Is\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3.1 is a hotfix for the 3.3 packaging split. Clean installs of 3.3.0 could fail on standalone component imports like \u003ccode\u003efrom fastmcp.tools import tool\u003c/code\u003e because component modules reached auth and task primitives through \u003ccode\u003efastmcp.server\u003c/code\u003e, pulling in the server/provider stack and exposing a circular import.\u003c/p\u003e\n\u003cp\u003eComponent-level auth and task primitives now live in lightweight utility modules, with the old server import paths preserved as compatibility re-exports. Component imports stay lightweight, existing server-facing imports continue to work, and the release also includes small docs corrections from the 3.3 rollout.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(docs): use valid FA icon on client-only package page by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4139\"\u003ePrefectHQ/fastmcp#4139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecouple component imports from server by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4150\"\u003ePrefectHQ/fastmcp#4150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.3.0: Slim Reaper\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3 ships \u003ccode\u003efastmcp-slim\u003c/code\u003e, a new lightweight distribution that separates the client from the server stack. It also closes out a meaningful backlog of security hardening, observability improvements, and auth additions that accumulated through the 3.2 cycle.\u003c/p\u003e\n\u003ch2\u003efastmcp-slim\u003c/h2\u003e\n\u003cp\u003eThe full FastMCP package pulls in Starlette, Uvicorn, and the rest of the server machinery — necessary for running a server, but wasteful if you're writing a client, a script, or an agent that just needs to talk to MCP. \u003ccode\u003efastmcp-slim\u003c/code\u003e is a dependency-light distribution that ships the client and transport layer without any of that.\u003c/p\u003e\n\u003cp\u003eThe import namespace is unchanged:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom fastmcp import Client\n\u003cp\u003easync with Client(\u0026quot;\u003ca href=\"https://example.com/mcp\"\u003ehttps://example.com/mcp\u003c/a\u003e\u0026quot;) as client:\nresult = await client.call_tool(\u0026quot;my_tool\u0026quot;, {\u0026quot;arg\u0026quot;: \u0026quot;value\u0026quot;})\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eInstall \u003ccode\u003efastmcp-slim[client]\u003c/code\u003e anywhere you want FastMCP's client without the server footprint — CI environments, lightweight agents, library dependencies that shouldn't force Uvicorn on downstream users.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003eThe OAuth proxy received three hardening upgrades. Silent consent is now guarded against AS-in-the-middle attacks — a malicious authorization server can no longer silently approve a consent it wasn't meant to handle. Redirect URI allowlist matching now rejects dot-segment paths (\u003ccode\u003e/../\u003c/code\u003e, \u003ccode\u003e/./\u003c/code\u003e) that could otherwise bypass prefix checks. And \u003ccode\u003eResponseCachingMiddleware\u003c/code\u003e partitions its cache by access token, closing a gap where different users could see each other's cached responses.\u003c/p\u003e\n\u003ch2\u003eAuth\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eAzureB2CProvider\u003c/code\u003e adds first-class support for Azure AD B2C user flows. The OCI provider is fixed for 3.x installs. And \u003ccode\u003eOAuthProxy\u003c/code\u003e gains a public \u003ccode\u003eupdate_scopes()\u003c/code\u003e API for updating the proxy's required scopes after initialization — useful for servers that determine scope requirements at runtime.\u003c/p\u003e\n\u003ch2\u003eObservability\u003c/h2\u003e\n\u003cp\u003eOTEL instrumentation is now fully compliant with MCP semantic conventions. List operations (\u003ccode\u003elist_tools\u003c/code\u003e, \u003ccode\u003elist_resources\u003c/code\u003e, \u003ccode\u003elist_prompts\u003c/code\u003e, \u003ccode\u003elist_resource_templates\u003c/code\u003e) are instrumented, and delegate spans on proxy servers are enriched with backend attributes.\u003c/p\u003e\n\u003ch2\u003eThread Affinity\u003c/h2\u003e\n\u003cp\u003eSync tools run in a thread pool by default. If your tool holds thread-local state or is bound to a specific thread (UI frameworks, some database drivers), you can now opt out:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/d8dcc273cac9f6f17889a1b60adbdc654f948a50\"\u003e\u003ccode\u003ed8dcc27\u003c/code\u003e\u003c/a\u003e Decouple component imports from server (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4150\"\u003e#4150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/255e3e491082d8fbaeb3ccf25be6983cbab8b657\"\u003e\u003ccode\u003e255e3e4\u003c/code\u003e\u003c/a\u003e fix(docs): use valid FA icon on client-only package page (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4139\"\u003e#4139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/73df4dcaeeba6f985607f633786d38db6caf23f7\"\u003e\u003ccode\u003e73df4dc\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4096\"\u003e#4096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/ee48a0fd6e077e1c32e996f7b51fd442e31c514f\"\u003e\u003ccode\u003eee48a0f\u003c/code\u003e\u003c/a\u003e Refine fastmcp-slim packaging (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4125\"\u003e#4125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/bb4894d2159cd10f0c07f038db9c56b14fb99586\"\u003e\u003ccode\u003ebb4894d\u003c/code\u003e\u003c/a\u003e Add fastmcp-slim for client-only installs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4122\"\u003e#4122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/8209093871af25bc3ceb50bfbcec317632218afd\"\u003e\u003ccode\u003e8209093\u003c/code\u003e\u003c/a\u003e fix(http): terminate active streamable-HTTP transports before lifespan shutdo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/cf59a4511ff1980fd932215ef886e665c829bdbf\"\u003e\u003ccode\u003ecf59a45\u003c/code\u003e\u003c/a\u003e Fix OCI Provider issue in 3.x version. Add OCI auth provider example … (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4116\"\u003e#4116\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/89b99ecfb987781735295869d2e3d620dde7af4c\"\u003e\u003ccode\u003e89b99ec\u003c/code\u003e\u003c/a\u003e fix(proxy): fall back to live identifier for backend_* span attributes (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4109\"\u003e#4109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/310314cf149a18d0a76e5703ee98f80ffb035171\"\u003e\u003ccode\u003e310314c\u003c/code\u003e\u003c/a\u003e fix: cli option --no-banner is NOT passed to cli but server-spec in-correctly...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/28722f846a0319913a4a7b67dd65131d615214b6\"\u003e\u003ccode\u003e28722f8\u003c/code\u003e\u003c/a\u003e fix: drop exc_info for expected tool failures, remove unreachable ValidationE...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.2.4...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.41.0 to 0.47.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.47.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEagerly import the ASGI app in the parent process by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2919\"\u003eKludex/uvicorn#2919\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003essl_context_factory\u003c/code\u003e for custom \u003ccode\u003eSSLContext\u003c/code\u003e configuration by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2920\"\u003eKludex/uvicorn#2920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003efd=0\u003c/code\u003e as a valid file descriptor with reload/workers by \u003ca href=\"https://github.com/eltoder\"\u003e\u003ccode\u003e@​eltoder\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2927\"\u003eKludex/uvicorn#2927\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.46.0...0.47.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.46.0...0.47.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.46.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_max_size\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2915\"\u003eKludex/uvicorn#2915\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_ping_interval\u003c/code\u003e and \u003ccode\u003ews_ping_timeout\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2916\"\u003eKludex/uvicorn#2916\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for incoming WebSocket message buffer in websockets-sansio by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2917\"\u003eKludex/uvicorn#2917\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.45.0...0.46.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.45.0...0.46.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.45.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve forwarded client ports in proxy headers middleware by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2903\"\u003eKludex/uvicorn#2903\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003eos.PathLike\u003c/code\u003e for \u003ccode\u003elog_config\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2905\"\u003eKludex/uvicorn#2905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003elog_level\u003c/code\u003e strings case-insensitively by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2907\"\u003eKludex/uvicorn#2907\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise helpful \u003ccode\u003eImportError\u003c/code\u003e when PyYAML is missing for YAML log config by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2906\"\u003eKludex/uvicorn#2906\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert empty context for ASGI runs by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2911\"\u003eKludex/uvicorn#2911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--reset-contextvars\u003c/code\u003e flag to isolate ASGI request context by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2912\"\u003eKludex/uvicorn#2912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert \u0026quot;Emit \u003ccode\u003ehttp.disconnect\u003c/code\u003e on server shutdown for streaming responses\u0026quot; (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2829\"\u003e#2829\u003c/a\u003e) by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2913\"\u003eKludex/uvicorn#2913\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Krishnachaitanyakc\"\u003e\u003ccode\u003e@​Krishnachaitanyakc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2870\"\u003eKludex/uvicorn#2870\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.44.0...0.45.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.44.0...0.45.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.44.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplement websocket keepalive pings for websockets-sansio by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2888\"\u003eKludex/uvicorn#2888\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.43.0...0.44.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.43.0...0.44.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.43.0\u003c/h2\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEmit \u003ccode\u003ehttp.disconnect\u003c/code\u003e ASGI \u003ccode\u003ereceive()\u003c/code\u003e event on server shutting down for streaming responses (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2829\"\u003e#2829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse native \u003ccode\u003econtext\u003c/code\u003e parameter for \u003ccode\u003ecreate_task\u003c/code\u003e on Python 3.11+ (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2859\"\u003e#2859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop cast in ASGI types (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2875\"\u003e#2875\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.42.0...0.43.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.42.0...0.43.0\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.47.0 (May 14, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003essl_context_factory\u003c/code\u003e for custom \u003ccode\u003eSSLContext\u003c/code\u003e configuration (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2920\"\u003e#2920\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEagerly import the ASGI app in the parent process (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2919\"\u003e#2919\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTreat \u003ccode\u003efd=0\u003c/code\u003e as a valid file descriptor with reload/workers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2927\"\u003e#2927\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.46.0 (April 23, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_max_size\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2915\"\u003e#2915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_ping_interval\u003c/code\u003e and \u003ccode\u003ews_ping_timeout\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2916\"\u003e#2916\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for incoming WebSocket message buffer in \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2917\"\u003e#2917\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.45.0 (April 21, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--reset-contextvars\u003c/code\u003e flag to isolate ASGI request context (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2912\"\u003e#2912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003eos.PathLike\u003c/code\u003e for \u003ccode\u003elog_config\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2905\"\u003e#2905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003elog_level\u003c/code\u003e strings case-insensitively (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2907\"\u003e#2907\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRevert \u0026quot;Emit \u003ccode\u003ehttp.disconnect\u003c/code\u003e on server shutdown for streaming responses\u0026quot; (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2913\"\u003e#2913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert \u0026quot;Explicitly start ASGI run with empty context\u0026quot; (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2911\"\u003e#2911\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve forwarded client ports in proxy headers middleware (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2903\"\u003e#2903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRaise helpful \u003ccode\u003eImportError\u003c/code\u003e when PyYAML is missing for YAML log config (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2906\"\u003e#2906\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.44.0 (April 6, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement websocket keepalive pings for websockets-sansio (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2888\"\u003e#2888\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.43.0 (April 3, 2026)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/479a2c0c89186714f1aac52aecdebebf271395ac\"\u003e\u003ccode\u003e479a2c0\u003c/code\u003e\u003c/a\u003e Version 0.47.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2937\"\u003e#2937\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/89347fd166ebedf98fb3f806ce8ea44e93b1c2b5\"\u003e\u003ccode\u003e89347fd\u003c/code\u003e\u003c/a\u003e Add 7-day cooldown for dependency resolution via uv exclude-newer (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2936\"\u003e#2936\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/767315b38ae509cee9fe8ee9d09f6da920536096\"\u003e\u003ccode\u003e767315b\u003c/code\u003e\u003c/a\u003e Drop unused contents/actions permissions from zizmor workflow (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2935\"\u003e#2935\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/f25ee43e68a9678453cbca99ad96f1a447ff34af\"\u003e\u003ccode\u003ef25ee43\u003c/code\u003e\u003c/a\u003e chore(deps): bump urllib3 from 2.6.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2933\"\u003e#2933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/8782666189a3d36c978de5698620db705659bf44\"\u003e\u003ccode\u003e8782666\u003c/code\u003e\u003c/a\u003e Fix typo in \u003ccode\u003edocs/deployment/index.md\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2932\"\u003e#2932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/ad5ff87c869e8a34e9b04fcd5ca38d65c526893c\"\u003e\u003ccode\u003ead5ff87\u003c/code\u003e\u003c/a\u003e Treat \u003ccode\u003efd=0\u003c/code\u003e as a valid file descriptor with reload/workers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2927\"\u003e#2927\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/6761b2c8f9272fa0e908d0b9cdcb3cb0aa11382f\"\u003e\u003ccode\u003e6761b2c\u003c/code\u003e\u003c/a\u003e Remove Hugging Face sponsor block from docs (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2923\"\u003e#2923\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/438f64834de00708a9bb3548a36090e7a924ad84\"\u003e\u003ccode\u003e438f648\u003c/code\u003e\u003c/a\u003e Surface sponsors on welcome page and sidebar (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2921\"\u003e#2921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/10ddc6dd296cb6e432a00835abe27f1c822373c1\"\u003e\u003ccode\u003e10ddc6d\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003essl_context_factory\u003c/code\u003e for custom \u003ccode\u003eSSLContext\u003c/code\u003e configuration (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2920\"\u003e#2920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/b499bc45101d920e691e384025d728507215d4d1\"\u003e\u003ccode\u003eb499bc4\u003c/code\u003e\u003c/a\u003e Eagerly import the ASGI app in the parent process (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2919\"\u003e#2919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.41.0...0.47.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.1.0 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (#)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/607\"\u003etheskumar/python-dotenv#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e#790c5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by \u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip 000 permission tests for root user by \u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/593\"\u003etheskumar/python-dotenv#593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Windows testing to CI by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/604\"\u003etheskumar/python-dotenv#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove workflow efficiency with best practices by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/609\"\u003etheskumar/python-dotenv#609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the use of \u003ccode\u003esh\u003c/code\u003e in tests by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/612\"\u003etheskumar/python-dotenv#612\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cpackham-atlnz\"\u003e\u003ccode\u003e@​cpackham-atlnz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/597\"\u003etheskumar/python-dotenv#597\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.2] - 2026-03-01\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/607\"\u003e#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eDropped Support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in [790c5c0]\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by [\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.1] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMove more config to \u003ccode\u003epyproject.toml\u003c/code\u003e, removed \u003ccode\u003esetup.cfg\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for reading \u003ccode\u003e.env\u003c/code\u003e from FIFOs (Unix) by [\u003ca href=\"https://github.com/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.0] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade build system to use PEP 517 \u0026amp; PEP 518 to use \u003ccode\u003ebuild\u003c/code\u003e and \u003ccode\u003epyproject.toml\u003c/code\u003e by [\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/583\"\u003e#583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by [\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/579\"\u003e#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for disabling of \u003ccode\u003eload_dotenv()\u003c/code\u003e using \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e env var. by [\u003ca href=\"https://github.com/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/569\"\u003e#569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.1] - 2025-06-24\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCLI: Ensure \u003ccode\u003efind_dotenv\u003c/code\u003e work reliably on python 3.13 by [\u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d\"\u003e\u003ccode\u003e36004e0\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8\"\u003e\u003ccode\u003eeb20252\u003c/code\u003e\u003c/a\u003e docs: update changelog for v1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e\u003ccode\u003e790c5c0\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1\"\u003e\u003ccode\u003e43340da\u003c/code\u003e\u003c/a\u003e Remove the use of \u003ccode\u003esh\u003c/code\u003e in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c\"\u003e\u003ccode\u003e09d7cee\u003c/code\u003e\u003c/a\u003e docs: clarify override behavior and document FIFO support (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c\"\u003e\u003ccode\u003ec8de288\u003c/code\u003e\u003c/a\u003e ci: improve workflow efficiency with best practices (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/609\"\u003e#609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4\"\u003e\u003ccode\u003e7bd9e3d\u003c/code\u003e\u003c/a\u003e Add Windows testing to CI (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81\"\u003e\u003ccode\u003e1baaf04\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support and update to PyPy 3.11 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc\"\u003e\u003ccode\u003e4a22cf8\u003c/code\u003e\u003c/a\u003e ci: enable testing on Python 3.14t (free-threaded) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4\"\u003e\u003ccode\u003ee2e8e77\u003c/code\u003e\u003c/a\u003e Fix license specifier (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `httpx` to 0.28.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/httpx/releases\"\u003ehttpx's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.28.1\u003c/h2\u003e\n\u003ch2\u003e0.28.1 (6th December, 2024)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix SSL case where \u003ccode\u003everify=False\u003c/code\u003e together with client side certificates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/httpx/blob/master/CHANGELOG.md\"\u003ehttpx's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.28.1 (6th December, 2024)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix SSL case where \u003ccode\u003everify=False\u003c/code\u003e together with client side certificates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.28.0 (28th November, 2024)\u003c/h2\u003e\n\u003cp\u003eBe aware that the default \u003cem\u003eJSON request bodies now use a more compact representation\u003c/em\u003e. This is generally considered a prefered style, tho may require updates to test suites.\u003c/p\u003e\n\u003cp\u003eThe 0.28 release includes a limited set of deprecations...\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e:\u003c/p\u003e\n\u003cp\u003eWe are working towards a simplified SSL configuration API.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFor users of the standard \u003ccode\u003everify=True\u003c/code\u003e or \u003ccode\u003everify=False\u003c/code\u003e cases, or \u003ccode\u003everify=\u0026lt;ssl_context\u0026gt;\u003c/code\u003e case this should require no changes. The following cases have been deprecated...\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003everify\u003c/code\u003e argument as a string argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecert\u003c/code\u003e argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOur revised \u003ca href=\"https://github.com/encode/httpx/blob/master/docs/advanced/ssl.md\"\u003eSSL documentation\u003c/a\u003e covers how to implement the same behaviour with a more constrained API.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe following changes are also included\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eproxies\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eapp\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eJSON request bodies use a compact representation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3363\"\u003e#3363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReview URL percent escape sets, based on WHATWG spec. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3371\"\u003e#3371\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/encode/httpx/issues/3373\"\u003e#3373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure \u003ccode\u003ecertifi\u003c/code\u003e and \u003ccode\u003ehttpcore\u003c/code\u003e are only imported if required. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003esocks5h\u003c/code\u003e as a valid proxy scheme. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3178\"\u003e#3178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCleanup \u003ccode\u003eRequest()\u003c/code\u003e method signature in line with \u003ccode\u003eclient.request()\u003c/code\u003e and \u003ccode\u003ehttpx.request()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3378\"\u003e#3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBugfix: When passing \u003ccode\u003eparams={}\u003c/code\u003e, always strictly update rather than merge with an existing querystring. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.27.2 (27th August, 2024)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReintroduced supposedly-private \u003ccode\u003eURLTypes\u003c/code\u003e shortcut. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/2673\"\u003e#2673\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.27.1 (27th August, 2024)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for \u003ccode\u003ezstd\u003c/code\u003e content decoding using the python \u003ccode\u003ezstandard\u003c/code\u003e package is added. Installable using \u003ccode\u003ehttpx[zstd]\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3139\"\u003e#3139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved error messaging for \u003ccode\u003eInvalidURL\u003c/code\u003e exceptions. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3250\"\u003e#3250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eapp\u003c/code\u003e type signature in \u003ccode\u003eASGITransport\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3109\"\u003e#3109\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.27.0 (21st February, 2024)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/26d48e0634e6ee9cdc0533996db289ce4b430177\"\u003e\u003ccode\u003e26d48e0\u003c/code\u003e\u003c/a\u003e Version 0.28.1 (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3445\"\u003e#3445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/89599a9541af14bcf906fc4ed58ccbdf403802ba\"\u003e\u003ccode\u003e89599a9\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003everify=False\u003c/code\u003e, \u003ccode\u003ecert=...\u003c/code\u003e case. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3442\"\u003e#3442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/8ecb86f0d74ffc52d4663214fae9526bee89358d\"\u003e\u003ccode\u003e8ecb86f\u003c/code\u003e\u003c/a\u003e Add test for request params behavior changes (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3440\"\u003e#3440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/0cb7e5a2e736628e2f506d259fcf0d48cd2bde82\"\u003e\u003ccode\u003e0cb7e5a\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 11 updates (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3434\"\u003e#3434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/15e21e9ea3cad4f06e22a7e704aabefdf43d2e29\"\u003e\u003ccode\u003e15e21e9\u003c/code\u003e\u003c/a\u003e Updating deprecated docstring Client() class (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3426\"\u003e#3426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/80960fa31918d7663c3f4c3ad61661cf0e80628f\"\u003e\u003ccode\u003e80960fa\u003c/code\u003e\u003c/a\u003e Version 0.28.0. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3419\"\u003e#3419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/a33c87852b8a0dddc65e5f739af1e0a6fca4b91f\"\u003e\u003ccode\u003ea33c878\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eextensions\u003c/code\u003e type annotation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3380\"\u003e#3380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/ce7e14da27abba6574be9b3ea7cd5990556a9343\"\u003e\u003ccode\u003ece7e14d\u003c/code\u003e\u003c/a\u003e Error on verify as str. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3418\"\u003e#3418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/47f4a96ffaaaa07dca1614409549b5d7a6e7af49\"\u003e\u003ccode\u003e47f4a96\u003c/code\u003e\u003c/a\u003e Handle empty zstd responses (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3412\"\u003e#3412\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/189fc4bcbe5f314128775dec66a616ac9a31ad48\"\u003e\u003ccode\u003e189fc4b\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md, fix typo(s) (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3406\"\u003e#3406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/httpx/compare/0.27.0...0.28.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beautifulsoup4` to 4.14.3\n","html_url":"https://github.com/pete-builds/anthropic-tracker-mcp/pull/6","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/pete-builds%2Fanthropic-tracker-mcp/issues/6","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/6/packages"},{"uuid":"4466486579","node_id":"PR_kwDORsO9Ws7chC7H","number":17,"state":"open","title":"fix(deps): bump fastmcp from 3.2.4 to 3.3.1 in the python-runtime group","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-18T05:26:23.000Z","updated_at":"2026-05-18T05:26:24.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"fix(deps)","packages":[{"name":"fastmcp","old_version":"3.2.4","new_version":"3.3.1","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":"the python-runtime group","ecosystem":"pip"},"body":"Bumps the python-runtime group with 1 update: [fastmcp](https://github.com/PrefectHQ/fastmcp).\n\nUpdates `fastmcp` from 3.2.4 to 3.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1: Loop There It Is\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3.1 is a hotfix for the 3.3 packaging split. Clean installs of 3.3.0 could fail on standalone component imports like \u003ccode\u003efrom fastmcp.tools import tool\u003c/code\u003e because component modules reached auth and task primitives through \u003ccode\u003efastmcp.server\u003c/code\u003e, pulling in the server/provider stack and exposing a circular import.\u003c/p\u003e\n\u003cp\u003eComponent-level auth and task primitives now live in lightweight utility modules, with the old server import paths preserved as compatibility re-exports. Component imports stay lightweight, existing server-facing imports continue to work, and the release also includes small docs corrections from the 3.3 rollout.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(docs): use valid FA icon on client-only package page by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4139\"\u003ePrefectHQ/fastmcp#4139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecouple component imports from server by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4150\"\u003ePrefectHQ/fastmcp#4150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.3.0: Slim Reaper\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3 ships \u003ccode\u003efastmcp-slim\u003c/code\u003e, a new lightweight distribution that separates the client from the server stack. It also closes out a meaningful backlog of security hardening, observability improvements, and auth additions that accumulated through the 3.2 cycle.\u003c/p\u003e\n\u003ch2\u003efastmcp-slim\u003c/h2\u003e\n\u003cp\u003eThe full FastMCP package pulls in Starlette, Uvicorn, and the rest of the server machinery — necessary for running a server, but wasteful if you're writing a client, a script, or an agent that just needs to talk to MCP. \u003ccode\u003efastmcp-slim\u003c/code\u003e is a dependency-light distribution that ships the client and transport layer without any of that.\u003c/p\u003e\n\u003cp\u003eThe import namespace is unchanged:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom fastmcp import Client\n\u003cp\u003easync with Client(\u0026quot;\u003ca href=\"https://example.com/mcp\"\u003ehttps://example.com/mcp\u003c/a\u003e\u0026quot;) as client:\nresult = await client.call_tool(\u0026quot;my_tool\u0026quot;, {\u0026quot;arg\u0026quot;: \u0026quot;value\u0026quot;})\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eInstall \u003ccode\u003efastmcp-slim[client]\u003c/code\u003e anywhere you want FastMCP's client without the server footprint — CI environments, lightweight agents, library dependencies that shouldn't force Uvicorn on downstream users.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003eThe OAuth proxy received three hardening upgrades. Silent consent is now guarded against AS-in-the-middle attacks — a malicious authorization server can no longer silently approve a consent it wasn't meant to handle. Redirect URI allowlist matching now rejects dot-segment paths (\u003ccode\u003e/../\u003c/code\u003e, \u003ccode\u003e/./\u003c/code\u003e) that could otherwise bypass prefix checks. And \u003ccode\u003eResponseCachingMiddleware\u003c/code\u003e partitions its cache by access token, closing a gap where different users could see each other's cached responses.\u003c/p\u003e\n\u003ch2\u003eAuth\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eAzureB2CProvider\u003c/code\u003e adds first-class support for Azure AD B2C user flows. The OCI provider is fixed for 3.x installs. And \u003ccode\u003eOAuthProxy\u003c/code\u003e gains a public \u003ccode\u003eupdate_scopes()\u003c/code\u003e API for updating the proxy's required scopes after initialization — useful for servers that determine scope requirements at runtime.\u003c/p\u003e\n\u003ch2\u003eObservability\u003c/h2\u003e\n\u003cp\u003eOTEL instrumentation is now fully compliant with MCP semantic conventions. List operations (\u003ccode\u003elist_tools\u003c/code\u003e, \u003ccode\u003elist_resources\u003c/code\u003e, \u003ccode\u003elist_prompts\u003c/code\u003e, \u003ccode\u003elist_resource_templates\u003c/code\u003e) are instrumented, and delegate spans on proxy servers are enriched with backend attributes.\u003c/p\u003e\n\u003ch2\u003eThread Affinity\u003c/h2\u003e\n\u003cp\u003eSync tools run in a thread pool by default. If your tool holds thread-local state or is bound to a specific thread (UI frameworks, some database drivers), you can now opt out:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/d8dcc273cac9f6f17889a1b60adbdc654f948a50\"\u003e\u003ccode\u003ed8dcc27\u003c/code\u003e\u003c/a\u003e Decouple component imports from server (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4150\"\u003e#4150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/255e3e491082d8fbaeb3ccf25be6983cbab8b657\"\u003e\u003ccode\u003e255e3e4\u003c/code\u003e\u003c/a\u003e fix(docs): use valid FA icon on client-only package page (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4139\"\u003e#4139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/73df4dcaeeba6f985607f633786d38db6caf23f7\"\u003e\u003ccode\u003e73df4dc\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4096\"\u003e#4096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/ee48a0fd6e077e1c32e996f7b51fd442e31c514f\"\u003e\u003ccode\u003eee48a0f\u003c/code\u003e\u003c/a\u003e Refine fastmcp-slim packaging (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4125\"\u003e#4125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/bb4894d2159cd10f0c07f038db9c56b14fb99586\"\u003e\u003ccode\u003ebb4894d\u003c/code\u003e\u003c/a\u003e Add fastmcp-slim for client-only installs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4122\"\u003e#4122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/8209093871af25bc3ceb50bfbcec317632218afd\"\u003e\u003ccode\u003e8209093\u003c/code\u003e\u003c/a\u003e fix(http): terminate active streamable-HTTP transports before lifespan shutdo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/cf59a4511ff1980fd932215ef886e665c829bdbf\"\u003e\u003ccode\u003ecf59a45\u003c/code\u003e\u003c/a\u003e Fix OCI Provider issue in 3.x version. Add OCI auth provider example … (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4116\"\u003e#4116\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/89b99ecfb987781735295869d2e3d620dde7af4c\"\u003e\u003ccode\u003e89b99ec\u003c/code\u003e\u003c/a\u003e fix(proxy): fall back to live identifier for backend_* span attributes (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4109\"\u003e#4109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/310314cf149a18d0a76e5703ee98f80ffb035171\"\u003e\u003ccode\u003e310314c\u003c/code\u003e\u003c/a\u003e fix: cli option --no-banner is NOT passed to cli but server-spec in-correctly...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/28722f846a0319913a4a7b67dd65131d615214b6\"\u003e\u003ccode\u003e28722f8\u003c/code\u003e\u003c/a\u003e fix: drop exc_info for expected tool failures, remove unreachable ValidationE...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.2.4...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=fastmcp\u0026package-manager=uv\u0026previous-version=3.2.4\u0026new-version=3.3.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/CaseyRo/mcp-siyuan/pull/17","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/CaseyRo%2Fmcp-siyuan/issues/17","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/17/packages"},{"uuid":"4465891422","node_id":"PR_kwDOSSILC87cfLA3","number":20,"state":"closed","title":"deps(deps): bump fastmcp from 3.2.4 to 3.3.1","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-05-24T03:50:40.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-18T02:44:26.000Z","updated_at":"2026-05-24T03:50:42.000Z","time_to_close":522374,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps)","packages":[{"name":"fastmcp","old_version":"3.2.4","new_version":"3.3.1","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":null,"ecosystem":"pip"},"body":"Bumps [fastmcp](https://github.com/PrefectHQ/fastmcp) from 3.2.4 to 3.3.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1: Loop There It Is\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3.1 is a hotfix for the 3.3 packaging split. Clean installs of 3.3.0 could fail on standalone component imports like \u003ccode\u003efrom fastmcp.tools import tool\u003c/code\u003e because component modules reached auth and task primitives through \u003ccode\u003efastmcp.server\u003c/code\u003e, pulling in the server/provider stack and exposing a circular import.\u003c/p\u003e\n\u003cp\u003eComponent-level auth and task primitives now live in lightweight utility modules, with the old server import paths preserved as compatibility re-exports. Component imports stay lightweight, existing server-facing imports continue to work, and the release also includes small docs corrections from the 3.3 rollout.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(docs): use valid FA icon on client-only package page by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4139\"\u003ePrefectHQ/fastmcp#4139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecouple component imports from server by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4150\"\u003ePrefectHQ/fastmcp#4150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.3.0: Slim Reaper\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3 ships \u003ccode\u003efastmcp-slim\u003c/code\u003e, a new lightweight distribution that separates the client from the server stack. It also closes out a meaningful backlog of security hardening, observability improvements, and auth additions that accumulated through the 3.2 cycle.\u003c/p\u003e\n\u003ch2\u003efastmcp-slim\u003c/h2\u003e\n\u003cp\u003eThe full FastMCP package pulls in Starlette, Uvicorn, and the rest of the server machinery — necessary for running a server, but wasteful if you're writing a client, a script, or an agent that just needs to talk to MCP. \u003ccode\u003efastmcp-slim\u003c/code\u003e is a dependency-light distribution that ships the client and transport layer without any of that.\u003c/p\u003e\n\u003cp\u003eThe import namespace is unchanged:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom fastmcp import Client\n\u003cp\u003easync with Client(\u0026quot;\u003ca href=\"https://example.com/mcp\"\u003ehttps://example.com/mcp\u003c/a\u003e\u0026quot;) as client:\nresult = await client.call_tool(\u0026quot;my_tool\u0026quot;, {\u0026quot;arg\u0026quot;: \u0026quot;value\u0026quot;})\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eInstall \u003ccode\u003efastmcp-slim[client]\u003c/code\u003e anywhere you want FastMCP's client without the server footprint — CI environments, lightweight agents, library dependencies that shouldn't force Uvicorn on downstream users.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003eThe OAuth proxy received three hardening upgrades. Silent consent is now guarded against AS-in-the-middle attacks — a malicious authorization server can no longer silently approve a consent it wasn't meant to handle. Redirect URI allowlist matching now rejects dot-segment paths (\u003ccode\u003e/../\u003c/code\u003e, \u003ccode\u003e/./\u003c/code\u003e) that could otherwise bypass prefix checks. And \u003ccode\u003eResponseCachingMiddleware\u003c/code\u003e partitions its cache by access token, closing a gap where different users could see each other's cached responses.\u003c/p\u003e\n\u003ch2\u003eAuth\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eAzureB2CProvider\u003c/code\u003e adds first-class support for Azure AD B2C user flows. The OCI provider is fixed for 3.x installs. And \u003ccode\u003eOAuthProxy\u003c/code\u003e gains a public \u003ccode\u003eupdate_scopes()\u003c/code\u003e API for updating the proxy's required scopes after initialization — useful for servers that determine scope requirements at runtime.\u003c/p\u003e\n\u003ch2\u003eObservability\u003c/h2\u003e\n\u003cp\u003eOTEL instrumentation is now fully compliant with MCP semantic conventions. List operations (\u003ccode\u003elist_tools\u003c/code\u003e, \u003ccode\u003elist_resources\u003c/code\u003e, \u003ccode\u003elist_prompts\u003c/code\u003e, \u003ccode\u003elist_resource_templates\u003c/code\u003e) are instrumented, and delegate spans on proxy servers are enriched with backend attributes.\u003c/p\u003e\n\u003ch2\u003eThread Affinity\u003c/h2\u003e\n\u003cp\u003eSync tools run in a thread pool by default. If your tool holds thread-local state or is bound to a specific thread (UI frameworks, some database drivers), you can now opt out:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/d8dcc273cac9f6f17889a1b60adbdc654f948a50\"\u003e\u003ccode\u003ed8dcc27\u003c/code\u003e\u003c/a\u003e Decouple component imports from server (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4150\"\u003e#4150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/255e3e491082d8fbaeb3ccf25be6983cbab8b657\"\u003e\u003ccode\u003e255e3e4\u003c/code\u003e\u003c/a\u003e fix(docs): use valid FA icon on client-only package page (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4139\"\u003e#4139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/73df4dcaeeba6f985607f633786d38db6caf23f7\"\u003e\u003ccode\u003e73df4dc\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4096\"\u003e#4096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/ee48a0fd6e077e1c32e996f7b51fd442e31c514f\"\u003e\u003ccode\u003eee48a0f\u003c/code\u003e\u003c/a\u003e Refine fastmcp-slim packaging (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4125\"\u003e#4125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/bb4894d2159cd10f0c07f038db9c56b14fb99586\"\u003e\u003ccode\u003ebb4894d\u003c/code\u003e\u003c/a\u003e Add fastmcp-slim for client-only installs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4122\"\u003e#4122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/8209093871af25bc3ceb50bfbcec317632218afd\"\u003e\u003ccode\u003e8209093\u003c/code\u003e\u003c/a\u003e fix(http): terminate active streamable-HTTP transports before lifespan shutdo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/cf59a4511ff1980fd932215ef886e665c829bdbf\"\u003e\u003ccode\u003ecf59a45\u003c/code\u003e\u003c/a\u003e Fix OCI Provider issue in 3.x version. Add OCI auth provider example … (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4116\"\u003e#4116\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/89b99ecfb987781735295869d2e3d620dde7af4c\"\u003e\u003ccode\u003e89b99ec\u003c/code\u003e\u003c/a\u003e fix(proxy): fall back to live identifier for backend_* span attributes (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4109\"\u003e#4109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/310314cf149a18d0a76e5703ee98f80ffb035171\"\u003e\u003ccode\u003e310314c\u003c/code\u003e\u003c/a\u003e fix: cli option --no-banner is NOT passed to cli but server-spec in-correctly...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/28722f846a0319913a4a7b67dd65131d615214b6\"\u003e\u003ccode\u003e28722f8\u003c/code\u003e\u003c/a\u003e fix: drop exc_info for expected tool failures, remove unreachable ValidationE...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.2.4...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n","html_url":"https://github.com/pete-builds/mcp-unifi/pull/20","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/pete-builds%2Fmcp-unifi/issues/20","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/20/packages"},{"uuid":"4465562787","node_id":"PR_kwDORXBeVM7ceKBe","number":27,"state":"open","title":"deps: bump fastmcp from 3.2.4 to 3.3.1 in the python-packages group","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-18T01:04:17.000Z","updated_at":"2026-05-18T01:04:18.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps","packages":[{"name":"fastmcp","old_version":"3.2.4","new_version":"3.3.1","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":"the python-packages group","ecosystem":"pip"},"body":"Bumps the python-packages group with 1 update: [fastmcp](https://github.com/PrefectHQ/fastmcp).\n\nUpdates `fastmcp` from 3.2.4 to 3.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1: Loop There It Is\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3.1 is a hotfix for the 3.3 packaging split. Clean installs of 3.3.0 could fail on standalone component imports like \u003ccode\u003efrom fastmcp.tools import tool\u003c/code\u003e because component modules reached auth and task primitives through \u003ccode\u003efastmcp.server\u003c/code\u003e, pulling in the server/provider stack and exposing a circular import.\u003c/p\u003e\n\u003cp\u003eComponent-level auth and task primitives now live in lightweight utility modules, with the old server import paths preserved as compatibility re-exports. Component imports stay lightweight, existing server-facing imports continue to work, and the release also includes small docs corrections from the 3.3 rollout.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(docs): use valid FA icon on client-only package page by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4139\"\u003ePrefectHQ/fastmcp#4139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecouple component imports from server by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4150\"\u003ePrefectHQ/fastmcp#4150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.3.0: Slim Reaper\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3 ships \u003ccode\u003efastmcp-slim\u003c/code\u003e, a new lightweight distribution that separates the client from the server stack. It also closes out a meaningful backlog of security hardening, observability improvements, and auth additions that accumulated through the 3.2 cycle.\u003c/p\u003e\n\u003ch2\u003efastmcp-slim\u003c/h2\u003e\n\u003cp\u003eThe full FastMCP package pulls in Starlette, Uvicorn, and the rest of the server machinery — necessary for running a server, but wasteful if you're writing a client, a script, or an agent that just needs to talk to MCP. \u003ccode\u003efastmcp-slim\u003c/code\u003e is a dependency-light distribution that ships the client and transport layer without any of that.\u003c/p\u003e\n\u003cp\u003eThe import namespace is unchanged:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom fastmcp import Client\n\u003cp\u003easync with Client(\u0026quot;\u003ca href=\"https://example.com/mcp\"\u003ehttps://example.com/mcp\u003c/a\u003e\u0026quot;) as client:\nresult = await client.call_tool(\u0026quot;my_tool\u0026quot;, {\u0026quot;arg\u0026quot;: \u0026quot;value\u0026quot;})\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eInstall \u003ccode\u003efastmcp-slim[client]\u003c/code\u003e anywhere you want FastMCP's client without the server footprint — CI environments, lightweight agents, library dependencies that shouldn't force Uvicorn on downstream users.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003eThe OAuth proxy received three hardening upgrades. Silent consent is now guarded against AS-in-the-middle attacks — a malicious authorization server can no longer silently approve a consent it wasn't meant to handle. Redirect URI allowlist matching now rejects dot-segment paths (\u003ccode\u003e/../\u003c/code\u003e, \u003ccode\u003e/./\u003c/code\u003e) that could otherwise bypass prefix checks. And \u003ccode\u003eResponseCachingMiddleware\u003c/code\u003e partitions its cache by access token, closing a gap where different users could see each other's cached responses.\u003c/p\u003e\n\u003ch2\u003eAuth\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eAzureB2CProvider\u003c/code\u003e adds first-class support for Azure AD B2C user flows. The OCI provider is fixed for 3.x installs. And \u003ccode\u003eOAuthProxy\u003c/code\u003e gains a public \u003ccode\u003eupdate_scopes()\u003c/code\u003e API for updating the proxy's required scopes after initialization — useful for servers that determine scope requirements at runtime.\u003c/p\u003e\n\u003ch2\u003eObservability\u003c/h2\u003e\n\u003cp\u003eOTEL instrumentation is now fully compliant with MCP semantic conventions. List operations (\u003ccode\u003elist_tools\u003c/code\u003e, \u003ccode\u003elist_resources\u003c/code\u003e, \u003ccode\u003elist_prompts\u003c/code\u003e, \u003ccode\u003elist_resource_templates\u003c/code\u003e) are instrumented, and delegate spans on proxy servers are enriched with backend attributes.\u003c/p\u003e\n\u003ch2\u003eThread Affinity\u003c/h2\u003e\n\u003cp\u003eSync tools run in a thread pool by default. If your tool holds thread-local state or is bound to a specific thread (UI frameworks, some database drivers), you can now opt out:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/d8dcc273cac9f6f17889a1b60adbdc654f948a50\"\u003e\u003ccode\u003ed8dcc27\u003c/code\u003e\u003c/a\u003e Decouple component imports from server (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4150\"\u003e#4150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/255e3e491082d8fbaeb3ccf25be6983cbab8b657\"\u003e\u003ccode\u003e255e3e4\u003c/code\u003e\u003c/a\u003e fix(docs): use valid FA icon on client-only package page (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4139\"\u003e#4139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/73df4dcaeeba6f985607f633786d38db6caf23f7\"\u003e\u003ccode\u003e73df4dc\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4096\"\u003e#4096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/ee48a0fd6e077e1c32e996f7b51fd442e31c514f\"\u003e\u003ccode\u003eee48a0f\u003c/code\u003e\u003c/a\u003e Refine fastmcp-slim packaging (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4125\"\u003e#4125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/bb4894d2159cd10f0c07f038db9c56b14fb99586\"\u003e\u003ccode\u003ebb4894d\u003c/code\u003e\u003c/a\u003e Add fastmcp-slim for client-only installs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4122\"\u003e#4122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/8209093871af25bc3ceb50bfbcec317632218afd\"\u003e\u003ccode\u003e8209093\u003c/code\u003e\u003c/a\u003e fix(http): terminate active streamable-HTTP transports before lifespan shutdo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/cf59a4511ff1980fd932215ef886e665c829bdbf\"\u003e\u003ccode\u003ecf59a45\u003c/code\u003e\u003c/a\u003e Fix OCI Provider issue in 3.x version. Add OCI auth provider example … (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4116\"\u003e#4116\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/89b99ecfb987781735295869d2e3d620dde7af4c\"\u003e\u003ccode\u003e89b99ec\u003c/code\u003e\u003c/a\u003e fix(proxy): fall back to live identifier for backend_* span attributes (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4109\"\u003e#4109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/310314cf149a18d0a76e5703ee98f80ffb035171\"\u003e\u003ccode\u003e310314c\u003c/code\u003e\u003c/a\u003e fix: cli option --no-banner is NOT passed to cli but server-spec in-correctly...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/28722f846a0319913a4a7b67dd65131d615214b6\"\u003e\u003ccode\u003e28722f8\u003c/code\u003e\u003c/a\u003e fix: drop exc_info for expected tool failures, remove unreachable ValidationE...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.2.4...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=fastmcp\u0026package-manager=pip\u0026previous-version=3.2.4\u0026new-version=3.3.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/KaiErikNiermann/pypreset/pull/27","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/KaiErikNiermann%2Fpypreset/issues/27","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/27/packages"},{"uuid":"4465278655","node_id":"PR_kwDOSffCDc7cdRGB","number":6,"state":"open","title":"deps(deps-dev): update fastmcp requirement from \u003e=2.0 to \u003e=3.3.1","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-17T23:35:41.000Z","updated_at":"2026-05-17T23:35:42.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps-dev): update","packages":[{"name":"fastmcp","old_version":"\u003e=2.0","new_version":"\u003e=3.3.1","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [fastmcp](https://github.com/PrefectHQ/fastmcp) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1: Loop There It Is\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3.1 is a hotfix for the 3.3 packaging split. Clean installs of 3.3.0 could fail on standalone component imports like \u003ccode\u003efrom fastmcp.tools import tool\u003c/code\u003e because component modules reached auth and task primitives through \u003ccode\u003efastmcp.server\u003c/code\u003e, pulling in the server/provider stack and exposing a circular import.\u003c/p\u003e\n\u003cp\u003eComponent-level auth and task primitives now live in lightweight utility modules, with the old server import paths preserved as compatibility re-exports. Component imports stay lightweight, existing server-facing imports continue to work, and the release also includes small docs corrections from the 3.3 rollout.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(docs): use valid FA icon on client-only package page by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4139\"\u003ePrefectHQ/fastmcp#4139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecouple component imports from server by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4150\"\u003ePrefectHQ/fastmcp#4150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/blob/main/docs/changelog.mdx\"\u003efastmcp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003chr /\u003e\n\u003ch2\u003etitle: \u0026quot;Changelog\u0026quot;\nicon: \u0026quot;list-check\u0026quot;\nrss: true\ntag: NEW\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.1\"\u003ev3.1.1: 'Tis But a Patch\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ePins \u003ccode\u003epydantic-monty\u003c/code\u003e below 0.0.8 to fix a breaking change in Monty that affects code mode. Monty 0.0.8 removed the \u003ccode\u003eexternal_functions\u003c/code\u003e constructor parameter, causing \u003ccode\u003eMontySandboxProvider\u003c/code\u003e to fail. This patch caps the version so existing installs work correctly.\u003c/p\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePin pydantic-monty below 0.0.8 to fix code mode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3497\"\u003e#3497\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.1.0...v3.1.1\"\u003ev3.1.0...v3.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.0\"\u003ev3.1.0: Code to Joy\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFastMCP 3.1 is the Code Mode release. The 3.0 architecture introduced providers and transforms as the extensibility layer — 3.1 puts that architecture to work, shipping the most requested capability since launch: servers that can find and execute code on behalf of agents, without requiring clients to know what tools exist.\u003c/p\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Search transforms for tool discovery by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3154\"\u003e#3154\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd experimental CodeMode transform by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3297\"\u003e#3297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Prefab Apps integration for MCP tool UIs by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3316\"\u003e#3316\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLazy-load heavy imports to reduce import time by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3295\"\u003e#3295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd http_client parameter to all token verifiers for connection pooling by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3300\"\u003e#3300\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd in-memory caching for token introspection results by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3298\"\u003e#3298\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SessionStart hook to install gh CLI in cloud sessions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3308\"\u003e#3308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty 0.0.19 type errors by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3310\"\u003e#3310\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCode Mode: Add resource limits to MontySandboxProvider by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3326\"\u003e#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept transforms as FastMCP init kwarg by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3324\"\u003e#3324\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSplit large test files to comply with loq line limit by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd -m/--module flag to \u003ccode\u003efastmcp run\u003c/code\u003e and \u003ccode\u003edev inspector\u003c/code\u003e by \u003ca href=\"https://github.com/dgenio\"\u003e\u003ccode\u003e@​dgenio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3331\"\u003e#3331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd search_result_serializer hook and serialize_tools_for_output_markdown by \u003ca href=\"https://github.com/MagnusS0\"\u003e\u003ccode\u003e@​MagnusS0\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3337\"\u003e#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd MultiAuth for composing multiple token verification sources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3335\"\u003e#3335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdds PropelAuth as an AuthProvider by \u003ca href=\"https://github.com/andrew-propelauth\"\u003e\u003ccode\u003e@​andrew-propelauth\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3358\"\u003e#3358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace vendored DI with uncalled-for by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3301\"\u003e#3301\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecompose CodeMode into composable discovery tools by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3354\"\u003e#3354\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(contrib): auto-sync MCPMixin decorators with from_function signatures by \u003ca href=\"https://github.com/AnkeshThakur\"\u003e\u003ccode\u003e@​AnkeshThakur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3323\"\u003e#3323\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Google GenAI Sampling Handler by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/2977\"\u003e#2977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ListTools, search limit, and catalog size annotation to CodeMode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3359\"\u003e#3359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow configuring FastMCP transport setting in the same way as other configuration by \u003ca href=\"https://github.com/jvdmr\"\u003e\u003ccode\u003e@​jvdmr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1796\"\u003e#1796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd include_unversioned option to VersionFilter by \u003ca href=\"https://github.com/yangbaechu\"\u003e\u003ccode\u003e@​yangbaechu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3349\"\u003e#3349\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/d8dcc273cac9f6f17889a1b60adbdc654f948a50\"\u003e\u003ccode\u003ed8dcc27\u003c/code\u003e\u003c/a\u003e Decouple component imports from server (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4150\"\u003e#4150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/255e3e491082d8fbaeb3ccf25be6983cbab8b657\"\u003e\u003ccode\u003e255e3e4\u003c/code\u003e\u003c/a\u003e fix(docs): use valid FA icon on client-only package page (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4139\"\u003e#4139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/73df4dcaeeba6f985607f633786d38db6caf23f7\"\u003e\u003ccode\u003e73df4dc\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4096\"\u003e#4096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/ee48a0fd6e077e1c32e996f7b51fd442e31c514f\"\u003e\u003ccode\u003eee48a0f\u003c/code\u003e\u003c/a\u003e Refine fastmcp-slim packaging (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4125\"\u003e#4125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/bb4894d2159cd10f0c07f038db9c56b14fb99586\"\u003e\u003ccode\u003ebb4894d\u003c/code\u003e\u003c/a\u003e Add fastmcp-slim for client-only installs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4122\"\u003e#4122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/8209093871af25bc3ceb50bfbcec317632218afd\"\u003e\u003ccode\u003e8209093\u003c/code\u003e\u003c/a\u003e fix(http): terminate active streamable-HTTP transports before lifespan shutdo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/cf59a4511ff1980fd932215ef886e665c829bdbf\"\u003e\u003ccode\u003ecf59a45\u003c/code\u003e\u003c/a\u003e Fix OCI Provider issue in 3.x version. Add OCI auth provider example … (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4116\"\u003e#4116\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/89b99ecfb987781735295869d2e3d620dde7af4c\"\u003e\u003ccode\u003e89b99ec\u003c/code\u003e\u003c/a\u003e fix(proxy): fall back to live identifier for backend_* span attributes (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4109\"\u003e#4109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/310314cf149a18d0a76e5703ee98f80ffb035171\"\u003e\u003ccode\u003e310314c\u003c/code\u003e\u003c/a\u003e fix: cli option --no-banner is NOT passed to cli but server-spec in-correctly...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/28722f846a0319913a4a7b67dd65131d615214b6\"\u003e\u003ccode\u003e28722f8\u003c/code\u003e\u003c/a\u003e fix: drop exc_info for expected tool failures, remove unreachable ValidationE...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v2.0.0...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/livingstaccato/provide-uterm-actions-test/pull/6","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/livingstaccato%2Fprovide-uterm-actions-test/issues/6","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/6/packages"},{"uuid":"4459256565","node_id":"PR_kwDORSvhlc7cLiiL","number":1,"state":"open","title":"Bump the pip group across 1 directory with 11 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-16T08:28:01.000Z","updated_at":"2026-05-16T08:28:35.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip","update_count":11,"packages":[{"name":"fastmcp","old_version":"2.13.1","new_version":"3.2.0","repository_url":"https://github.com/PrefectHQ/fastmcp"},{"name":"flask","old_version":"3.0.3","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"},{"name":"simpleeval","old_version":"1.0.3","new_version":"1.0.5","repository_url":"https://github.com/danthedeckie/simpleeval"},{"name":"langchain-core","old_version":"0.3.49","new_version":"1.3.3","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-community","old_version":"0.3.19","new_version":"0.3.27","repository_url":"https://github.com/langchain-ai/langchain-community"},{"name":"lxml-html-clean","old_version":"0.3.1","new_version":"0.4.4","repository_url":"https://github.com/fedora-python/lxml_html_clean"},{"name":"mcp","old_version":"1.22.0","new_version":"1.23.0","repository_url":"https://github.com/modelcontextprotocol/python-sdk"},{"name":"paramiko","old_version":"3.5.0","new_version":"5.0.0","repository_url":"https://github.com/paramiko/paramiko"},{"name":"pypdf","old_version":"6.0.0","new_version":"6.10.2","repository_url":"https://github.com/py-pdf/pypdf"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"unstructured","old_version":"0.16.23","new_version":"0.18.18","repository_url":"https://github.com/Unstructured-IO/unstructured"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip group with 11 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastmcp](https://github.com/PrefectHQ/fastmcp) | `2.13.1` | `3.2.0` |\n| [flask](https://github.com/pallets/flask) | `3.0.3` | `3.1.3` |\n| [simpleeval](https://github.com/danthedeckie/simpleeval) | `1.0.3` | `1.0.5` |\n| [langchain-core](https://github.com/langchain-ai/langchain) | `0.3.49` | `1.3.3` |\n| [langchain-community](https://github.com/langchain-ai/langchain-community) | `0.3.19` | `0.3.27` |\n| [lxml-html-clean](https://github.com/fedora-python/lxml_html_clean) | `0.3.1` | `0.4.4` |\n| [mcp](https://github.com/modelcontextprotocol/python-sdk) | `1.22.0` | `1.23.0` |\n| [paramiko](https://github.com/paramiko/paramiko) | `3.5.0` | `5.0.0` |\n| [pypdf](https://github.com/py-pdf/pypdf) | `6.0.0` | `6.10.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.2.2` |\n| [unstructured](https://github.com/Unstructured-IO/unstructured) | `0.16.23` | `0.18.18` |\n\n\nUpdates `fastmcp` from 2.13.1 to 3.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.0: Show Don't Tool\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.2 is the Apps release. The 3.0 architecture gave you providers and transforms; 3.1 shipped Code Mode for tool discovery. 3.2 puts a face on it: your tools can now return interactive UIs — charts, dashboards, forms, maps — rendered right inside the conversation.\u003c/p\u003e\n\u003ch2\u003eFastMCPApp\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eFastMCPApp\u003c/code\u003e is a new provider class for building interactive applications inside MCP. It separates the tools the LLM sees (\u003ccode\u003e@app.ui()\u003c/code\u003e) from the backend tools the UI calls (\u003ccode\u003e@app.tool()\u003c/code\u003e), manages visibility automatically, and gives tool references stable identifiers that survive namespace transforms and server composition — without requiring host cooperation.\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom fastmcp import FastMCP, FastMCPApp\nfrom prefab_ui.actions.mcp import CallTool\nfrom prefab_ui.components import Column, Form, Input, Button, ForEach, Text\n\u003cp\u003eapp = FastMCPApp(\u0026quot;Contacts\u0026quot;)\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/app\"\u003e\u003ccode\u003e@​app\u003c/code\u003e\u003c/a\u003e.tool()\ndef save_contact(name: str, email: str) -\u0026gt; list[dict]:\ndb.append({\u0026quot;name\u0026quot;: name, \u0026quot;email\u0026quot;: email})\nreturn list(db)\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/app\"\u003e\u003ccode\u003e@​app\u003c/code\u003e\u003c/a\u003e.ui()\ndef contact_manager() -\u0026gt; PrefabApp:\nwith PrefabApp(state={\u0026quot;contacts\u0026quot;: list(db)}) as view:\nwith Column(gap=4):\nForEach(\u0026quot;contacts\u0026quot;, lambda c: Text(c.name))\nwith Form(on_submit=CallTool(\u0026quot;save_contact\u0026quot;)):\nInput(name=\u0026quot;name\u0026quot;, required=True)\nInput(name=\u0026quot;email\u0026quot;, required=True)\nButton(\u0026quot;Save\u0026quot;)\nreturn view\u003c/p\u003e\n\u003cp\u003emcp = FastMCP(\u0026quot;Server\u0026quot;, providers=[app])\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eThe UI is built with \u003ca href=\"https://prefab.prefect.io\"\u003ePrefab\u003c/a\u003e, a Python component library that compiles to interactive UIs. You write Python; the user sees charts, tables, forms, and dashboards. FastMCP handles the MCP Apps protocol machinery — renderer resources, CSP configuration, structured content serialization — so you don't have to.\u003c/p\u003e\n\u003cp\u003eFor simpler cases where you just want to visualize data without server interaction, set \u003ccode\u003eapp=True\u003c/code\u003e on any tool and return Prefab components directly:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e@mcp.tool(app=True)\ndef revenue_chart(year: int) -\u0026gt; PrefabApp:\n    with PrefabApp() as app:\n        BarChart(data=revenue_data, series=[ChartSeries(data_key=\u0026quot;revenue\u0026quot;)])\n    return app\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eBuilt-in Providers\u003c/h2\u003e\n\u003cp\u003eFive ready-made providers you add with a single \u003ccode\u003eadd_provider()\u003c/code\u003e call:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFileUpload\u003c/strong\u003e — drag-and-drop file upload with session-scoped storage\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/blob/main/docs/changelog.mdx\"\u003efastmcp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003chr /\u003e\n\u003ch2\u003etitle: \u0026quot;Changelog\u0026quot;\nicon: \u0026quot;list-check\u0026quot;\nrss: true\ntag: NEW\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.1\"\u003ev3.1.1: 'Tis But a Patch\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ePins \u003ccode\u003epydantic-monty\u003c/code\u003e below 0.0.8 to fix a breaking change in Monty that affects code mode. Monty 0.0.8 removed the \u003ccode\u003eexternal_functions\u003c/code\u003e constructor parameter, causing \u003ccode\u003eMontySandboxProvider\u003c/code\u003e to fail. This patch caps the version so existing installs work correctly.\u003c/p\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePin pydantic-monty below 0.0.8 to fix code mode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3497\"\u003e#3497\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.1.0...v3.1.1\"\u003ev3.1.0...v3.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.0\"\u003ev3.1.0: Code to Joy\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFastMCP 3.1 is the Code Mode release. The 3.0 architecture introduced providers and transforms as the extensibility layer — 3.1 puts that architecture to work, shipping the most requested capability since launch: servers that can find and execute code on behalf of agents, without requiring clients to know what tools exist.\u003c/p\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Search transforms for tool discovery by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3154\"\u003e#3154\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd experimental CodeMode transform by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3297\"\u003e#3297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Prefab Apps integration for MCP tool UIs by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3316\"\u003e#3316\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLazy-load heavy imports to reduce import time by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3295\"\u003e#3295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd http_client parameter to all token verifiers for connection pooling by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3300\"\u003e#3300\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd in-memory caching for token introspection results by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3298\"\u003e#3298\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SessionStart hook to install gh CLI in cloud sessions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3308\"\u003e#3308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty 0.0.19 type errors by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3310\"\u003e#3310\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCode Mode: Add resource limits to MontySandboxProvider by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3326\"\u003e#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept transforms as FastMCP init kwarg by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3324\"\u003e#3324\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSplit large test files to comply with loq line limit by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd -m/--module flag to \u003ccode\u003efastmcp run\u003c/code\u003e and \u003ccode\u003edev inspector\u003c/code\u003e by \u003ca href=\"https://github.com/dgenio\"\u003e\u003ccode\u003e@​dgenio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3331\"\u003e#3331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd search_result_serializer hook and serialize_tools_for_output_markdown by \u003ca href=\"https://github.com/MagnusS0\"\u003e\u003ccode\u003e@​MagnusS0\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3337\"\u003e#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd MultiAuth for composing multiple token verification sources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3335\"\u003e#3335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdds PropelAuth as an AuthProvider by \u003ca href=\"https://github.com/andrew-propelauth\"\u003e\u003ccode\u003e@​andrew-propelauth\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3358\"\u003e#3358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace vendored DI with uncalled-for by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3301\"\u003e#3301\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecompose CodeMode into composable discovery tools by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3354\"\u003e#3354\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(contrib): auto-sync MCPMixin decorators with from_function signatures by \u003ca href=\"https://github.com/AnkeshThakur\"\u003e\u003ccode\u003e@​AnkeshThakur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3323\"\u003e#3323\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Google GenAI Sampling Handler by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/2977\"\u003e#2977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ListTools, search limit, and catalog size annotation to CodeMode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3359\"\u003e#3359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow configuring FastMCP transport setting in the same way as other configuration by \u003ca href=\"https://github.com/jvdmr\"\u003e\u003ccode\u003e@​jvdmr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1796\"\u003e#1796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd include_unversioned option to VersionFilter by \u003ca href=\"https://github.com/yangbaechu\"\u003e\u003ccode\u003e@​yangbaechu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3349\"\u003e#3349\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/665514e19a78543709be85b4261153bbe98e882f\"\u003e\u003ccode\u003e665514e\u003c/code\u003e\u003c/a\u003e Add forward_resource flag to OAuthProxy (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3711\"\u003e#3711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/f189d1f7fbfd55c9f68c750a3a293e31c7586e8b\"\u003e\u003ccode\u003ef189d1f\u003c/code\u003e\u003c/a\u003e Bump pydantic-monty to 0.0.9 (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3707\"\u003e#3707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/6faa2d61f82eab670694965606fd7b14bedddc7f\"\u003e\u003ccode\u003e6faa2d6\u003c/code\u003e\u003c/a\u003e Remove hardcoded prefab-ui version from pinning warnings (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3708\"\u003e#3708\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/dd8816c6ccc733048fe6208bfc8f80ded505f993\"\u003e\u003ccode\u003edd8816c\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3701\"\u003e#3701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/d27495960af23969f11d6e1e44e2018529c1c37e\"\u003e\u003ccode\u003ed274959\u003c/code\u003e\u003c/a\u003e docs: note that custom routes are unauthenticated (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3706\"\u003e#3706\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/4a54be2d5f1ac8925a461e67cf993e0278729d4d\"\u003e\u003ccode\u003e4a54be2\u003c/code\u003e\u003c/a\u003e Add examples gallery page (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3705\"\u003e#3705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/961dd5045611e9c1bd6b7c4f5ac3aa14f0a30ce7\"\u003e\u003ccode\u003e961dd50\u003c/code\u003e\u003c/a\u003e Add interactive map example with geocoding (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3702\"\u003e#3702\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/f01d0c581c7a821a9701d6dde4d9beb95e32d479\"\u003e\u003ccode\u003ef01d0c5\u003c/code\u003e\u003c/a\u003e Add quiz example app, fix dev server empty string args (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3700\"\u003e#3700\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/85b7efd74601a72c74ac68e23599de6c032bb9c4\"\u003e\u003ccode\u003e85b7efd\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3694\"\u003e#3694\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/27abe3c3f0cc2ce1925cc3cbc7968d5637ebc82b\"\u003e\u003ccode\u003e27abe3c\u003c/code\u003e\u003c/a\u003e Add sales dashboard and live system monitor examples, bump prefab-ui to 0.17 ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v2.13.1...v3.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flask` from 3.0.3 to 3.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.2\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.2/\"\u003ehttps://pypi.org/project/Flask/3.1.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-2\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/38?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/38?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5774\"\u003e#5774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state of \u003ccode\u003esession\u003c/code\u003e is correct. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5786\"\u003e#5786\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5776\"\u003e#5776\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.1\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.1/\"\u003ehttps://pypi.org/project/Flask/3.1.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/flask/milestone/36?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/36?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. GHSA-4grg-w6v8-c28g\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5645\"\u003e#5645\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands are shown. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5673\"\u003e#5673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return \u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier for Quart. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5659\"\u003e#5659\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.0\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecations, or introduce potentially breaking changes. We encourage everyone to upgrade, and to use a tool such as \u003ca href=\"https://pypi.org/project/pip-tools/\"\u003epip-tools\u003c/a\u003e to pin all dependencies and control upgrades. Test with warnings treated as errors to be able to adapt to deprecation warnings early.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.0/\"\u003ehttps://pypi.org/project/Flask/3.1.0/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/33?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/33?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5623\"\u003e#5623\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases. Werkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5624\"\u003e#5624\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5633\"\u003e#5633\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option responses. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5496\"\u003e#5496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and \u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when opening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5504\"\u003e#5504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only through the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added \u003ccode\u003eMAX_FORM_MEMORY_SIZE\u003c/code\u003e and \u003ccode\u003eMAX_FORM_PARTS\u003c/code\u003e config. Added documentation about resource limits to the security page. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5625\"\u003e#5625\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003ePartitioned\u003c/code\u003e cookie attribute (CHIPS), with the \u003ccode\u003eSESSION_COOKIE_PARTITIONED\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5472\"\u003e#5472\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e-e path\u003c/code\u003e takes precedence over default \u003ccode\u003e.env\u003c/code\u003e and \u003ccode\u003e.flaskenv\u003c/code\u003e files. \u003ccode\u003eload_dotenv\u003c/code\u003e loads default files in addition to a path unless \u003ccode\u003eload_defaults=False\u003c/code\u003e is passed. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5628\"\u003e#5628\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport key rotation with the \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e config, a list of old secret keys that can still be used for unsigning. Extensions will need to add support. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5621\"\u003e#5621\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix how setting \u003ccode\u003ehost_matching=True\u003c/code\u003e or \u003ccode\u003esubdomain_matching=False\u003c/code\u003e interacts with \u003ccode\u003eSERVER_NAME\u003c/code\u003e. Setting \u003ccode\u003eSERVER_NAME\u003c/code\u003e no longer restricts requests to only that domain. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5553\"\u003e#5553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.trusted_hosts\u003c/code\u003e is checked during routing, and can be set through the \u003ccode\u003eTRUSTED_HOSTS\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5636\"\u003e#5636\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.0.3...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `simpleeval` from 1.0.3 to 1.0.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/danthedeckie/simpleeval/releases\"\u003esimpleeval's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.0.5\u003c/h2\u003e\n\u003cp\u003eFixes Security issues with \u0026quot;dangerous\u0026quot; modules \u0026amp; functions leaking through as attributes of other names, see:\u003c/p\u003e\n\u003cp\u003eFixes CVE-2026-32640\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/danthedeckie/simpleeval/security/advisories/GHSA-44vg-5wv2-h2hg\"\u003ehttps://github.com/danthedeckie/simpleeval/security/advisories/GHSA-44vg-5wv2-h2hg\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eBreaking Change:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eModules \u0026amp; Submodules now are not directly usable as names or as attributes of other items, if you still need this functionality, then use the new \u003ccode\u003eModuleWrapper\u003c/code\u003e, or subclass SimpleEval to bypass it.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danthedeckie/simpleeval/commit/a4659fad8f3fb855acaf7667b2a48ff9f5576b5d\"\u003e\u003ccode\u003ea4659fa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/danthedeckie/simpleeval/issues/171\"\u003e#171\u003c/a\u003e from danthedeckie/remove-module-access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danthedeckie/simpleeval/commit/7c9180c52d1fcfea468ae42cf9495d8f055a2940\"\u003e\u003ccode\u003e7c9180c\u003c/code\u003e\u003c/a\u003e version number bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danthedeckie/simpleeval/commit/cffa9f68cee54404a2ef43d949a8ae8a3311c503\"\u003e\u003ccode\u003ecffa9f6\u003c/code\u003e\u003c/a\u003e Much stricter lockdown via _check_disallowed_items plus adding ModuleWrapper\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danthedeckie/simpleeval/commit/4e7f4b81e6d32fd2c24dd5cfa2977d725e11162d\"\u003e\u003ccode\u003e4e7f4b8\u003c/code\u003e\u003c/a\u003e Add ByamB4 to contributors list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danthedeckie/simpleeval/commit/1654cbf0219345f707c79664b8657be6b8d23e33\"\u003e\u003ccode\u003e1654cbf\u003c/code\u003e\u003c/a\u003e Disallow module access \u0026amp; disallowed function access via attributes.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danthedeckie/simpleeval/commit/9cb4a7b99498c173263bd90f77bc185e160fb6b8\"\u003e\u003ccode\u003e9cb4a7b\u003c/code\u003e\u003c/a\u003e Add a few additional DISALLOW_FUNCTIONS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danthedeckie/simpleeval/commit/0425898b23abb3f1a9ed56dbb0bb4244d6350f2f\"\u003e\u003ccode\u003e0425898\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/danthedeckie/simpleeval/issues/169\"\u003e#169\u003c/a\u003e from danthedeckie/update-readme\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danthedeckie/simpleeval/commit/618bcf4b2cb322aefc76735bf091739c8148a19e\"\u003e\u003ccode\u003e618bcf4\u003c/code\u003e\u003c/a\u003e update build tools / config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danthedeckie/simpleeval/commit/88289434c3f88df4646ce37fc67a3ef9158917d6\"\u003e\u003ccode\u003e8828943\u003c/code\u003e\u003c/a\u003e bump version, and update copyright year\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danthedeckie/simpleeval/commit/97570fe4659bbafdf49d9407dc4423f3c7f0f235\"\u003e\u003ccode\u003e97570fe\u003c/code\u003e\u003c/a\u003e lint string joining fixes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/danthedeckie/simpleeval/compare/1.0.3...1.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langchain-core` from 0.3.49 to 1.3.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain-core==1.3.3\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.3.2\u003c/p\u003e\n\u003cp\u003erelease(core): 1.3.3 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37198\"\u003e#37198\u003c/a\u003e)\nfix(core): set deprecation \u003ccode\u003esince\u003c/code\u003e to 1.3.3 to match release (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37200\"\u003e#37200\u003c/a\u003e)\nfix(core, langchain): harden \u003ccode\u003eload()\u003c/code\u003e against untrusted manifests (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37197\"\u003e#37197\u003c/a\u003e)\nchore: bump notebook from 7.5.0 to 7.5.6 in /libs/core (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37109\"\u003e#37109\u003c/a\u003e)\nchore: bump types-pyyaml from 6.0.12.20250915 to 6.0.12.20260408 in /libs/core (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37129\"\u003e#37129\u003c/a\u003e)\nfix(core): preserve structured \u003ccode\u003einputs\u003c/code\u003e on tool runs in tracers (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37108\"\u003e#37108\u003c/a\u003e)\nrelease(perplexity): 1.2.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37091\"\u003e#37091\u003c/a\u003e)\nchore(docs): update x handle references (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37081\"\u003e#37081\u003c/a\u003e)\nfix(core): make \u003ccode\u003eremoval\u003c/code\u003e optional in \u003ccode\u003ewarn_deprecated\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37056\"\u003e#37056\u003c/a\u003e)\nfix(core): validate batch_size in _batch and _abatch to prevent infinite loop (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36663\"\u003e#36663\u003c/a\u003e)\nchore(core): mark stream_v2/astream_v2 as beta (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36992\"\u003e#36992\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.3.2\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.3.1\u003c/p\u003e\n\u003cp\u003erelease(core): 1.3.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36990\"\u003e#36990\u003c/a\u003e)\nfeat(core): add content-block-centric streaming (v2) (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36834\"\u003e#36834\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.3.1\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.3.0\u003c/p\u003e\n\u003cp\u003erelease(core): 1.3.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36972\"\u003e#36972\u003c/a\u003e)\nfeat(core): allow _format_output to pass through list of ToolOutputMixin instances (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36963\"\u003e#36963\u003c/a\u003e)\nchore: bump nbconvert from 7.17.0 to 7.17.1 in /libs/core (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36923\"\u003e#36923\u003c/a\u003e)\nfeat(core): Update inheritance behavior for tracer metadata for special keys (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36900\"\u003e#36900\u003c/a\u003e)\nchore: bump langsmith from 0.7.13 to 0.7.31 in /libs/core (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36813\"\u003e#36813\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.3.0\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.2.31\u003c/p\u003e\n\u003cp\u003erelease(core): release 1.3.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36851\"\u003e#36851\u003c/a\u003e)\nrelease(core): 1.3.0a3 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36829\"\u003e#36829\u003c/a\u003e)\nchore(core): keep checkpoint_ns behavior in streaming metadata for backwards compat (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36828\"\u003e#36828\u003c/a\u003e)\nfeat(core): Add chat model and LLM invocation params to traceable metadata (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36771\"\u003e#36771\u003c/a\u003e)\nfix(core): restore cloud metadata IPs and link-local range in SSRF policy (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36816\"\u003e#36816\u003c/a\u003e)\nchore(deps): bump pytest to \u003ccode\u003e9.0.3\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36801\"\u003e#36801\u003c/a\u003e)\nchore(core): harden private SSRF utilities (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36768\"\u003e#36768\u003c/a\u003e)\nfix(openai): handle content blocks without type key in responses api conversion (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36725\"\u003e#36725\u003c/a\u003e)\nchore: bump pytest from 9.0.2 to 9.0.3 in /libs/core (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36719\"\u003e#36719\u003c/a\u003e)\nrelease(core): 1.3.0.a2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36698\"\u003e#36698\u003c/a\u003e)\nfix(core): Use reference counting for storing inherited run trees to support garbage collection (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36660\"\u003e#36660\u003c/a\u003e)\ndocs(core): nit (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36685\"\u003e#36685\u003c/a\u003e)\nrelease(core): 1.3.0a1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36656\"\u003e#36656\u003c/a\u003e)\nchore(core): reduce streaming metadata / perf (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36588\"\u003e#36588\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.3.0a3\u003c/h2\u003e\n\u003cp\u003eInitial release\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/5039dfec1f8e78459540a7f1b52fb0d6d82e3f07\"\u003e\u003ccode\u003e5039dfe\u003c/code\u003e\u003c/a\u003e release(core): 1.3.3 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37198\"\u003e#37198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/55a7707837742c2f7a9b7e4a5dd428bf615f3b82\"\u003e\u003ccode\u003e55a7707\u003c/code\u003e\u003c/a\u003e fix(core): set deprecation \u003ccode\u003esince\u003c/code\u003e to 1.3.3 to match release (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37200\"\u003e#37200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/c979c6187b6d82f4bef35b10b84b39fa44806b22\"\u003e\u003ccode\u003ec979c61\u003c/code\u003e\u003c/a\u003e fix(core, langchain): harden \u003ccode\u003eload()\u003c/code\u003e against untrusted manifests (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37197\"\u003e#37197\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/d7031101da78e3f6b6c5956b48a5170c1a33292b\"\u003e\u003ccode\u003ed703110\u003c/code\u003e\u003c/a\u003e docs: update README.md (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37190\"\u003e#37190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/4d50a2a68b38e9acc53027ea7e7cc89e2d80b4c7\"\u003e\u003ccode\u003e4d50a2a\u003c/code\u003e\u003c/a\u003e ci(infra): run pre-release checks before TestPyPI publish (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37194\"\u003e#37194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/9bd730e1991baac4ea80aa07d93110dc1b52ee25\"\u003e\u003ccode\u003e9bd730e\u003c/code\u003e\u003c/a\u003e fix(fireworks): require \u003ccode\u003eapi_key\u003c/code\u003e in \u003ccode\u003eFireworksEmbeddings\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37193\"\u003e#37193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/f475f4191fc3a8d3cf14063b44d524594c080c04\"\u003e\u003ccode\u003ef475f41\u003c/code\u003e\u003c/a\u003e release(mistralai): 1.1.4 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37191\"\u003e#37191\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/7dbff48aff508b01dc231ea0cbd4e4e09da92c97\"\u003e\u003ccode\u003e7dbff48\u003c/code\u003e\u003c/a\u003e fix(mistralai): strip non-wire keys from \u003ccode\u003eToolMessage\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37188\"\u003e#37188\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/913816c440ea79295370e1af6484e17b86e5d03c\"\u003e\u003ccode\u003e913816c\u003c/code\u003e\u003c/a\u003e release(fireworks): 1.3.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37189\"\u003e#37189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/4498d3dc84a85688fa4d15476403a900bc7f9114\"\u003e\u003ccode\u003e4498d3d\u003c/code\u003e\u003c/a\u003e fix(fireworks): strip non-wire keys from \u003ccode\u003eToolMessage\u003c/code\u003e text content blocks (#...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langchain/compare/langchain-core==0.3.49...langchain-core==1.3.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langchain-community` from 0.3.19 to 0.3.27\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain-community/releases\"\u003elangchain-community's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elibs/community/v0.3.27\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ecommunity[patch]: verify ssl by default in RecursiveUrlLoader by \u003ca href=\"https://github.com/eyurtsev\"\u003e\u003ccode\u003e@​eyurtsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/136\"\u003elangchain-ai/langchain-community#136\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: Change JSON loader to be able to handle UTF-8-BOM files by \u003ca href=\"https://github.com/witlat\"\u003e\u003ccode\u003e@​witlat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/138\"\u003elangchain-ai/langchain-community#138\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWriteFileTool should create not existent parent dirs in file_path by \u003ca href=\"https://github.com/vria\"\u003e\u003ccode\u003e@​vria\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/132\"\u003elangchain-ai/langchain-community#132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e:zap: fix: update OpenAI model cost values for accuracy by \u003ca href=\"https://github.com/tdahar\"\u003e\u003ccode\u003e@​tdahar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/142\"\u003elangchain-ai/langchain-community#142\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecommunity[patch]: Prevent XXE in evernote loader by \u003ca href=\"https://github.com/eyurtsev\"\u003e\u003ccode\u003e@​eyurtsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/139\"\u003elangchain-ai/langchain-community#139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erelease 0.3.27 by \u003ca href=\"https://github.com/eyurtsev\"\u003e\u003ccode\u003e@​eyurtsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/143\"\u003elangchain-ai/langchain-community#143\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/witlat\"\u003e\u003ccode\u003e@​witlat\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/138\"\u003elangchain-ai/langchain-community#138\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vria\"\u003e\u003ccode\u003e@​vria\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/132\"\u003elangchain-ai/langchain-community#132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tdahar\"\u003e\u003ccode\u003e@​tdahar\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/142\"\u003elangchain-ai/langchain-community#142\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/langchain-ai/langchain-community/compare/libs/community/v0.3.26...libs/community/v0.3.27\"\u003ehttps://github.com/langchain-ai/langchain-community/compare/libs/community/v0.3.26...libs/community/v0.3.27\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003elibs/community/v0.3.26\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[USearch]: Intializations of ids in case self.ids is None by \u003ca href=\"https://github.com/keenborder786\"\u003e\u003ccode\u003e@​keenborder786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/99\"\u003elangchain-ai/langchain-community#99\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecommunity[patch]: drop langsmith upper bound and release 0.3.26 by \u003ca href=\"https://github.com/ccurme\"\u003e\u003ccode\u003e@​ccurme\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/127\"\u003elangchain-ai/langchain-community#127\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/keenborder786\"\u003e\u003ccode\u003e@​keenborder786\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/99\"\u003elangchain-ai/langchain-community#99\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/langchain-ai/langchain-community/compare/libs/community/v0.3.25...libs/community/v0.3.26\"\u003ehttps://github.com/langchain-ai/langchain-community/compare/libs/community/v0.3.25...libs/community/v0.3.26\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003elibs/community/v0.3.25\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: replace invalid scenexplain algorithm by \u003ca href=\"https://github.com/MichaelLi65535\"\u003e\u003ccode\u003e@​MichaelLi65535\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/59\"\u003elangchain-ai/langchain-community#59\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003einfra: specify pyopenssl in extended test deps by \u003ca href=\"https://github.com/ccurme\"\u003e\u003ccode\u003e@​ccurme\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/80\"\u003elangchain-ai/langchain-community#80\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecommunity[patch]: deprecate Tavily tools in favor of langchain-tavily implementation by \u003ca href=\"https://github.com/ccurme\"\u003e\u003ccode\u003e@​ccurme\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/79\"\u003elangchain-ai/langchain-community#79\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeprecating hugging face implementation in langchain_community by \u003ca href=\"https://github.com/CtrlMj\"\u003e\u003ccode\u003e@​CtrlMj\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/73\"\u003elangchain-ai/langchain-community#73\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003evectorstores[azure_search]: fix regression in 0.3.24  by \u003ca href=\"https://github.com/marcgibbons\"\u003e\u003ccode\u003e@​marcgibbons\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/77\"\u003elangchain-ai/langchain-community#77\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecommunity: Add cost data for aws bedrock claude 4 series models by \u003ca href=\"https://github.com/AsifMehmood97\"\u003e\u003ccode\u003e@​AsifMehmood97\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/83\"\u003elangchain-ai/langchain-community#83\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove no-untyped-def escapes by \u003ca href=\"https://github.com/cbornet\"\u003e\u003ccode\u003e@​cbornet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/17\"\u003elangchain-ai/langchain-community#17\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add search endpoint for Firecrawl Integration by \u003ca href=\"https://github.com/ftonato\"\u003e\u003ccode\u003e@​ftonato\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/87\"\u003elangchain-ai/langchain-community#87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecommunity[patch]: ssl verification should be enabled by default everywhere by \u003ca href=\"https://github.com/eyurtsev\"\u003e\u003ccode\u003e@​eyurtsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/75\"\u003elangchain-ai/langchain-community#75\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: handle image of size 0 bytes in PyPDFParser by \u003ca href=\"https://github.com/soucosmo\"\u003e\u003ccode\u003e@​soucosmo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/84\"\u003elangchain-ai/langchain-community#84\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add depandabot config by \u003ca href=\"https://github.com/eyurtsev\"\u003e\u003ccode\u003e@​eyurtsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/90\"\u003elangchain-ai/langchain-community#90\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHarden Azure ML url validation by \u003ca href=\"https://github.com/tonybaloney\"\u003e\u003ccode\u003e@​tonybaloney\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/88\"\u003elangchain-ai/langchain-community#88\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: update readme by \u003ca href=\"https://github.com/ccurme\"\u003e\u003ccode\u003e@​ccurme\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/95\"\u003elangchain-ai/langchain-community#95\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003epatch: sanitize file extension in HuggingFaceTextToSpeechModelInference by \u003ca href=\"https://github.com/eyurtsev\"\u003e\u003ccode\u003e@​eyurtsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/101\"\u003elangchain-ai/langchain-community#101\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: telegram multiformat by \u003ca href=\"https://github.com/jerryyf\"\u003e\u003ccode\u003e@​jerryyf\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/89\"\u003elangchain-ai/langchain-community#89\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecommunity: release 0.3.25 by \u003ca href=\"https://github.com/ccurme\"\u003e\u003ccode\u003e@​ccurme\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/86\"\u003elangchain-ai/langchain-community#86\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MichaelLi65535\"\u003e\u003ccode\u003e@​MichaelLi65535\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/59\"\u003elangchain-ai/langchain-community#59\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/CtrlMj\"\u003e\u003ccode\u003e@​CtrlMj\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/73\"\u003elangchain-ai/langchain-community#73\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marcgibbons\"\u003e\u003ccode\u003e@​marcgibbons\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/77\"\u003elangchain-ai/langchain-community#77\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cbornet\"\u003e\u003ccode\u003e@​cbornet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/17\"\u003elangchain-ai/langchain-community#17\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/langchain-ai/langchain-community/commits/libs/community/v0.3.27\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `lxml-html-clean` from 0.3.1 to 0.4.4\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fedora-python/lxml_html_clean/blob/main/CHANGES.rst\"\u003elxml-html-clean's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e0.4.4 (2026-02-26)\u003c/h1\u003e\n\u003ch2\u003eBugs fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where Unicode escapes in CSS were not properly decoded\nbefore security checks. This prevents attackers from bypassing filters\nusing escape sequences. (CVE-2026-28348)\u003c/li\u003e\n\u003cli\u003eFixed a security issue where \u003ccode\u003e\u0026lt;base\u0026gt;\u003c/code\u003e tags could be used for URL\nhijacking attacks. The \u003ccode\u003e\u0026lt;base\u0026gt;\u003c/code\u003e tag is now automatically removed\nwhenever the \u003ccode\u003e\u0026lt;head\u0026gt;\u003c/code\u003e tag is removed (via \u003ccode\u003epage_structure=True\u003c/code\u003e\nor manual configuration), as \u003ccode\u003e\u0026lt;base\u0026gt;\u003c/code\u003e must be inside \u003ccode\u003e\u0026lt;head\u0026gt;\u003c/code\u003e\naccording to HTML specifications. (CVE-2026-28350)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e0.4.3 (2025-10-02)\u003c/h1\u003e\n\u003ch2\u003eMaintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eTests updated to work correctly with new lxml and libxml2 releases.\u003c/li\u003e\n\u003cli\u003ePython 3.6 and 3.7 are no longer tested.\u003c/li\u003e\n\u003cli\u003eImproved documentation about CSS removal behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e0.4.2 (2025-04-09)\u003c/h1\u003e\n\u003ch2\u003eBugs fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003elxml_html_clean\u003c/code\u003e now correctly handles HTML input as bytes\nas it did before the 0.2.0 release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e0.4.1 (2024-11-15)\u003c/h1\u003e\n\u003ch2\u003eBugs fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved superfluous debug prints.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e0.4.0 (2024-11-12)\u003c/h1\u003e\n\u003ch2\u003eBugs fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003eCleaner()\u003c/code\u003e now scans for hidden JavaScript code embedded\nwithin CSS comments. In certain contexts, such as within \u003ccode\u003e\u0026lt;svg\u0026gt;\u003c/code\u003e or \u003ccode\u003e\u0026lt;math\u0026gt;\u003c/code\u003e tags,\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fedora-python/lxml_html_clean/commit/fd10d79cf8a4d4a962e139aee6d02dec02b2de7c\"\u003e\u003ccode\u003efd10d79\u003c/code\u003e\u003c/a\u003e Add more tests for different combinations of backslashes and unicode\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fedora-python/lxml_html_clean/commit/5b7e2288d9e5bda81d1fcf6a4feaed362534899e\"\u003e\u003ccode\u003e5b7e228\u003c/code\u003e\u003c/a\u003e Restore the removal of all backslashes from styles after decoding of unicode ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fedora-python/lxml_html_clean/commit/88da8f9e679190ae06f1238106dd9fbd1d87bfbb\"\u003e\u003ccode\u003e88da8f9\u003c/code\u003e\u003c/a\u003e Prepare release 0.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fedora-python/lxml_html_clean/commit/9c5612ca33b941eec4178abf8a5294b103403f34\"\u003e\u003ccode\u003e9c5612c\u003c/code\u003e\u003c/a\u003e Remove \u0026lt;base\u0026gt; tags to prevent URL hijacking attacks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fedora-python/lxml_html_clean/commit/2ef732667ddbc74ea59847bcf24b75809aaeed3b\"\u003e\u003ccode\u003e2ef7326\u003c/code\u003e\u003c/a\u003e Implement unicode escape decoding\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fedora-python/lxml_html_clean/commit/7c854afd949ff82cc6e81a666962e07b739706cf\"\u003e\u003ccode\u003e7c854af\u003c/code\u003e\u003c/a\u003e Add missing Python 3.14 to classifiers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fedora-python/lxml_html_clean/commit/80cebf7156449bd48d2d6106a70c7442874fa1f9\"\u003e\u003ccode\u003e80cebf7\u003c/code\u003e\u003c/a\u003e Continue using the package link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fedora-python/lxml_html_clean/commit/1cef82e0647549b901452f45396ded8e6b2bceab\"\u003e\u003ccode\u003e1cef82e\u003c/code\u003e\u003c/a\u003e Update safe sanitizer recommendation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fedora-python/lxml_html_clean/commit/79f35f4b7542bf87286b45764a7b0bdf6830bb36\"\u003e\u003ccode\u003e79f35f4\u003c/code\u003e\u003c/a\u003e CI: Drop Python 3.8, add 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fedora-python/lxml_html_clean/commit/fab1dd4a23cbad1cdd4f2cebd2d6cae1130565bd\"\u003e\u003ccode\u003efab1dd4\u003c/code\u003e\u003c/a\u003e Release 0.4.3\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fedora-python/lxml_html_clean/compare/0.3.1...0.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mcp` from 1.22.0 to 1.23.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/releases\"\u003emcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.23.0\u003c/h2\u003e\n\u003ch2\u003eSummary\u003c/h2\u003e\n\u003cp\u003eThis release brings us up to speed with the latest MCP spec \u003ccode\u003e2025-11-25\u003c/code\u003e. Take a look at the \u003ca href=\"https://modelcontextprotocol.io/specification/2025-11-25\"\u003elatest spec\u003c/a\u003e as well as the release \u003ca href=\"https://blog.modelcontextprotocol.io/posts/2025-11-25-first-mcp-anniversary/\"\u003eblog post.\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd tests for JSON Schema 2020-12 field preservation (SEP-1613) by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1649\"\u003emodelcontextprotocol/python-sdk#1649\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd client_secret_basic authentication support by \u003ca href=\"https://github.com/jonshea\"\u003e\u003ccode\u003e@​jonshea\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1334\"\u003emodelcontextprotocol/python-sdk#1334\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplement SEP-1577 - Sampling With Tools by \u003ca href=\"https://github.com/ochafik\"\u003e\u003ccode\u003e@​ochafik\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1594\"\u003emodelcontextprotocol/python-sdk#1594\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSEP-1330: Elicitation Enum Schema Improvements and Standards Compliance by \u003ca href=\"https://github.com/chughtapan\"\u003e\u003ccode\u003e@​chughtapan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1246\"\u003emodelcontextprotocol/python-sdk#1246\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[auth][conformance] add conformance auth client by \u003ca href=\"https://github.com/pcarleton\"\u003e\u003ccode\u003e@​pcarleton\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1640\"\u003emodelcontextprotocol/python-sdk#1640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplement SEP-986: Tool name validation by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1655\"\u003emodelcontextprotocol/python-sdk#1655\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: url for spec by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1659\"\u003emodelcontextprotocol/python-sdk#1659\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: implement SEP-991 URL-based client ID (CIMD) support by \u003ca href=\"https://github.com/pcarleton\"\u003e\u003ccode\u003e@​pcarleton\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1652\"\u003emodelcontextprotocol/python-sdk#1652\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate doc string on custom_route by \u003ca href=\"https://github.com/pcarleton\"\u003e\u003ccode\u003e@​pcarleton\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1660\"\u003emodelcontextprotocol/python-sdk#1660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplement SEP-1036: URL mode elicitation for secure out-of-band interactions by \u003ca href=\"https://github.com/cbcoutinho\"\u003e\u003ccode\u003e@​cbcoutinho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1580\"\u003emodelcontextprotocol/python-sdk#1580\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip empty SSE data to avoid parsing errors by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1670\"\u003emodelcontextprotocol/python-sdk#1670\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSEP-1686: Tasks by \u003ca href=\"https://github.com/maxisbey\"\u003e\u003ccode\u003e@​maxisbey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1645\"\u003emodelcontextprotocol/python-sdk#1645\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd on_session_created callback option by \u003ca href=\"https://github.com/crondinini-ant\"\u003e\u003ccode\u003e@​crondinini-ant\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1710\"\u003emodelcontextprotocol/python-sdk#1710\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SSE polling support (SEP-1699) by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1654\"\u003emodelcontextprotocol/python-sdk#1654\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport client_credentials flow with JWT and Basic auth by \u003ca href=\"https://github.com/pcarleton\"\u003e\u003ccode\u003e@​pcarleton\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1663\"\u003emodelcontextprotocol/python-sdk#1663\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: backwards-compatible create_message overloads for SEP-1577 by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1713\"\u003emodelcontextprotocol/python-sdk#1713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAuto-enable DNS rebinding protection for localhost servers by \u003ca href=\"https://github.com/pcarleton\"\u003e\u003ccode\u003e@​pcarleton\u003c/code\u003e\u003c/a\u003e  (d3a184119e4479ea6a63590bc41f01dc06e3fa99)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ochafik\"\u003e\u003ccode\u003e@​ochafik\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1594\"\u003emodelcontextprotocol/python-sdk#1594\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/compare/v1.22.0...v1.23.0\"\u003ehttps://github.com/modelcontextprotocol/python-sdk/compare/v1.22.0...v1.23.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/d3a184119e4479ea6a63590bc41f01dc06e3fa99\"\u003e\u003ccode\u003ed3a1841\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/fa851d93a2036a37cce73e098f7dbc80a6c48765\"\u003e\u003ccode\u003efa851d9\u003c/code\u003e\u003c/a\u003e feat: backwards-compatible create_message overloads for SEP-1577 (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/1713\"\u003e#1713\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/f82b0c937178815c1e96460455778578050c6d1a\"\u003e\u003ccode\u003ef82b0c9\u003c/code\u003e\u003c/a\u003e Support client_credentials flow with JWT and Basic auth (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/1663\"\u003e#1663\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/281fd4765e0fc2efaf2039d248c3bc0698416a8a\"\u003e\u003ccode\u003e281fd47\u003c/code\u003e\u003c/a\u003e Add SSE polling support (SEP-1699) (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/1654\"\u003e#1654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/2cd178a962ab454e3add228ecd721784b7b36e99\"\u003e\u003ccode\u003e2cd178a\u003c/code\u003e\u003c/a\u003e Add on_session_created callback option (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/1710\"\u003e#1710\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/c92bb2f7ffaa61813d7cc350887f4ece38307769\"\u003e\u003ccode\u003ec92bb2f\u003c/code\u003e\u003c/a\u003e SEP-1686: Tasks (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/1645\"\u003e#1645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/5983a650cc07d2dc6c6ba098e99d3545889157a9\"\u003e\u003ccode\u003e5983a65\u003c/code\u003e\u003c/a\u003e Skip empty SSE data to avoid parsing errors (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/1670\"\u003e#1670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/02b78899296ce3631565345501e3d956b83ffe94\"\u003e\u003ccode\u003e02b7889\u003c/code\u003e\u003c/a\u003e Implement SEP-1036: URL mode elicitation for secure out-of-band interactions ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/27279bc157cbc03f7fe7758fd55a4b34c5652f42\"\u003e\u003ccode\u003e27279bc\u003c/code\u003e\u003c/a\u003e Update doc string on custom_route (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/1660\"\u003e#1660\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/f22501315eab5b8358c603ac7f730f77bb09e4c4\"\u003e\u003ccode\u003ef225013\u003c/code\u003e\u003c/a\u003e feat: implement SEP-991 URL-based client ID (CIMD) support (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/1652\"\u003e#1652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/compare/v1.22.0...v1.23.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `paramiko` from 3.5.0 to 5.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/paramiko/paramiko/commit/710cc5c02e2ded370d8d24e261e2baa8317a20fa\"\u003e\u003ccode\u003e710cc5c\u003c/code\u003e\u003c/a\u003e What's a few weeks between friends?\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/paramiko/paramiko/commit/ea93c5951ce1e1442be18c718c2dcc4fd8da7519\"\u003e\u003ccode\u003eea93c59\u003c/code\u003e\u003c/a\u003e Fix up Ed25519Key so it has non-erroring repr() during fatal errors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/paramiko/paramiko/commit/5b90ef9fbc774658879223e012235914d65c657b\"\u003e\u003ccode\u003e5b90ef9\u003c/code\u003e\u003c/a\u003e ruff/isort\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/paramiko/paramiko/commit/f3864b69346c853be6709f9b3f5f6a71c61e2e1a\"\u003e\u003ccode\u003ef3864b6\u003c/code\u003e\u003c/a\u003e Changelog fixes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/paramiko/paramiko/commit/acd4bc1dee5a594a3534b6d76f7dfc6ebd55f71b\"\u003e\u003ccode\u003eacd4bc1\u003c/code\u003e\u003c/a\u003e Replace hardcoded PEM format in PKey.write* with new parameter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/paramiko/paramiko/commit/6fa15569100fc222af4153f763d19620d64d9e4f\"\u003e\u003ccode\u003e6fa1556\u003c/code\u003e\u003c/a\u003e Bump group-exchange kex min_bits to 2048\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/paramiko/paramiko/commit/eb87ad3b241c08994a032c539ea8e1c51d544cea\"\u003e\u003ccode\u003eeb87ad3\u003c/code\u003e\u003c/a\u003e Fix some tests that were incorrectly passing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/paramiko/paramiko/commit/1ecc933b34510525aee8cad9956c3b8e642783ec\"\u003e\u003ccode\u003e1ecc933\u003c/code\u003e\u003c/a\u003e Remove GSSAPI support :(\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/paramiko/paramiko/commit/9bf5fcae57e6ca995275037eea9d6305f70d7cdb\"\u003e\u003ccode\u003e9bf5fca\u003c/code\u003e\u003c/a\u003e Remove SHA1-based (non-GSS) kex methods\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/paramiko/paramiko/commit/b8f75c7cd19d5c26220737c66498e5066af239b7\"\u003e\u003ccode\u003eb8f75c7\u003c/code\u003e\u003c/a\u003e Lintin' ain't easy\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/paramiko/paramiko/compare/3.5.0...5.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypdf` from 6.0.0 to 6.10.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/py-pdf/pypdf/releases\"\u003epypdf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.10.2, 2026-04-15\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDo not rely on possibly invalid /Size for incremental cloning (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3735\"\u003e#3735\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIntroduce limits for FlateDecode parameters and image decoding (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3734\"\u003e#3734\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.10.1...6.10.2\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.10.1, 2026-04-14\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit the allowed size of xref and object streams (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3733\"\u003e#3733\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eConsider strict mode setting for decryption errors (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3731\"\u003e#3731\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse new parameter names for compress_identical_objects by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.10.0...6.10.1\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.10.0, 2026-04-10\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisallow custom XML entity declarations for XMP metadata (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3724\"\u003e#3724\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSkip MD5 key derivation for AES-256 encrypted PDFs (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3694\"\u003e#3694\u003c/a\u003e) by \u003ca href=\"https://github.com/Ygnas\"\u003e\u003ccode\u003e@​Ygnas\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse remove_orphans in compress_identical_objects (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3310\"\u003e#3310\u003c/a\u003e) by \u003ca href=\"https://github.com/j-t-1\"\u003e\u003ccode\u003e@​j-t-1\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix PdfReadError when xref table contains comments before trailer (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3710\"\u003e#3710\u003c/a\u003e) by \u003ca href=\"https://github.com/rassie\"\u003e\u003ccode\u003e@​rassie\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrectly verify AES padding during decryption (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3699\"\u003e#3699\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix stale object cache from non-authoritative object streams (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3698\"\u003e#3698\u003c/a\u003e) by \u003ca href=\"https://github.com/astahlman\"\u003e\u003ccode\u003e@​astahlman\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix extract_links pairing when annotations include non-links (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3687\"\u003e#3687\u003c/a\u003e) by \u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd AI policy (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3717\"\u003e#3717\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.9.2...6.10.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.9.2, 2026-03-23\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid infinite loop in read_from_stream for broken files (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3693\"\u003e#3693\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/py-pdf/pypdf/blob/main/CHANGELOG.md\"\u003epypdf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.10.2, 2026-04-15\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDo not rely on possibly invalid /Size for incremental cloning (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3735\"\u003e#3735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce limits for FlateDecode parameters and image decoding (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3734\"\u003e#3734\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.10.1...6.10.2\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.10.1, 2026-04-14\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit the allowed size of xref and object streams (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3733\"\u003e#3733\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eConsider strict mode setting for decryption errors (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3731\"\u003e#3731\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse new parameter names for compress_identical_objects\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.10.0...6.10.1\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.10.0, 2026-04-10\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisallow custom XML entity declarations for XMP metadata (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3724\"\u003e#3724\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSkip MD5 key derivation for AES-256 encrypted PDFs (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3694\"\u003e#3694\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse remove_orphans in compress_identical_objects (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3310\"\u003e#3310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix PdfReadError when xref table contains comments before trailer (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3710\"\u003e#3710\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCorrectly verify AES padding during decryption (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3699\"\u003e#3699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix stale object cache from non-authoritative object streams (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3698\"\u003e#3698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix extract_links pairing when annotations include non-links (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3687\"\u003e#3687\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd AI policy (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3717\"\u003e#3717\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.9.2...6.10.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.9.2, 2026-03-23\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid infinite loop in read_from_stream for broken files (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3693\"\u003e#3693\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolve UnboundLocalError for xobjs in _get_image (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3684\"\u003e#3684\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.9.1...6.9.2\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/c476b4f293c8ef4cac07dfb755e5582d838fcdc0\"\u003e\u003ccode\u003ec476b4f\u003c/code\u003e\u003c/a\u003e REL: 6.10.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/c50a0104cf083356f7c7f5d61410466a57f5c88a\"\u003e\u003ccode\u003ec50a010\u003c/cod...\n\n_Description has been truncated_","html_url":"https://github.com/adrianwedd/agent-zero/pull/1","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrianwedd%2Fagent-zero/issues/1","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1/packages"},{"uuid":"4449419164","node_id":"PR_kwDOQn0M3s7bsGBN","number":954,"state":"closed","title":"build(deps): update fastmcp requirement from \u003c4.0,\u003e=3.0 to \u003e=3.2.4,\u003c4.0 in /pipeline","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-21T21:28:51.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-14T21:28:17.000Z","updated_at":"2026-05-21T21:28:53.000Z","time_to_close":604834,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): update","packages":[{"name":"fastmcp","old_version":"\u003c4.0,\u003e=3.0","new_version":"\u003e=3.2.4,\u003c4.0","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":"/pipeline","ecosystem":"pip"},"body":"Updates the requirements on [fastmcp](https://github.com/PrefectHQ/fastmcp) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.4: Patch Me If You Can\u003c/h2\u003e\n\u003cp\u003eA grab bag of fixes, hardening, and polish.\u003c/p\u003e\n\u003cp\u003eThe headline behavior change: background tasks are now scoped to the authorization context rather than the MCP session, so a task kicked off by an authenticated user survives session churn and stays tied to who started it. This is a breaking change for anyone relying on the old session-scoped semantics.\u003c/p\u003e\n\u003cp\u003eSecurity got three meaningful upgrades. \u003ccode\u003eFileUpload\u003c/code\u003e now validates actual decoded base64 size instead of trusting the client-reported number, so an attacker can't claim \u0026quot;10 bytes\u0026quot; and deliver 10MB. The proxy client stops forwarding inbound HTTP headers to unrelated remote servers — previously a header meant for server A could leak to server B. And AuthKit now auto-binds token audience to the resource URL per RFC 8707, closing a token-reuse gap across MCP resources.\u003c/p\u003e\n\u003cp\u003eSchema handling had a rough-edges pass. \u003ccode\u003ejson_schema_to_type\u003c/code\u003e no longer crashes on Python keywords, boolean schemas, empty enums, or name collisions, and we added a 232K-schema crash test from APIs.guru to keep it honest. Gemini 2.5 Flash compatibility is fixed by stripping \u003ccode\u003etitle\u003c/code\u003e fields the model rejects. Parameter descriptions are now extracted from docstrings automatically, so your tool signatures document themselves.\u003c/p\u003e\n\u003cp\u003ePlus a Keycloak OAuth provider for enterprise auth, improvements to \u003ccode\u003ectx.elicit()\u003c/code\u003e (new \u003ccode\u003eresponse_title\u003c/code\u003e/\u003ccode\u003eresponse_description\u003c/code\u003e, deprecation warning when called without \u003ccode\u003eresponse_type\u003c/code\u003e), and dozens of smaller fixes across transforms, retry middleware, resource templates, and client disconnect handling.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes ⚠️\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eScope tasks to authorization context, not session by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3800\"\u003ePrefectHQ/fastmcp#3800\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump pydocket\u0026gt;=0.19.0, drop fakeredis pin by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3822\"\u003ePrefectHQ/fastmcp#3822\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd real-world schema crash test (232K schemas from APIs.guru) by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3826\"\u003ePrefectHQ/fastmcp#3826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable 7 zero-violation ruff rules by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3841\"\u003ePrefectHQ/fastmcp#3841\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePromote 7 ty rules from ignore to warn by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3852\"\u003ePrefectHQ/fastmcp#3852\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace ___ with hash-based backend tool routing and per-tool prefab resources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3824\"\u003ePrefectHQ/fastmcp#3824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable 4 ruff rules (DTZ, ERA, ISC, INP) and fix 9 violations by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3842\"\u003ePrefectHQ/fastmcp#3842\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract parameter descriptions from docstrings by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3872\"\u003ePrefectHQ/fastmcp#3872\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: speed up schema crash test (CSafeLoader + xdist-safe aggregation) by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3873\"\u003ePrefectHQ/fastmcp#3873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest: bump OpenAPI init perf threshold to 200ms for Windows CI by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3879\"\u003ePrefectHQ/fastmcp#3879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: unify object-schema conversion through _object_schema_to_type by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3884\"\u003ePrefectHQ/fastmcp#3884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Keycloak OAuth Provider for Enterprise Authentication and local dev by \u003ca href=\"https://github.com/stephaneberle9\"\u003e\u003ccode\u003e@​stephaneberle9\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1937\"\u003ePrefectHQ/fastmcp#1937\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow auth providers to override protected resource base URLs by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3900\"\u003ePrefectHQ/fastmcp#3900\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable PERF and T20 ruff rules by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3845\"\u003ePrefectHQ/fastmcp#3845\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd response_title and response_description to ctx.elicit() by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3912\"\u003ePrefectHQ/fastmcp#3912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeprecate ctx.elicit() without response_type by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3916\"\u003ePrefectHQ/fastmcp#3916\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity 🔒\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValidate actual base64 data size in FileUpload, not client-reported size by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3816\"\u003ePrefectHQ/fastmcp#3816\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop forwarding inbound HTTP headers to unrelated remote servers by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3837\"\u003ePrefectHQ/fastmcp#3837\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAuthKit: auto-bind token audience to resource URL (RFC 8707) by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3905\"\u003ePrefectHQ/fastmcp#3905\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eVersion-check is_docket_available() to avoid transitive pydocket crash by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3807\"\u003ePrefectHQ/fastmcp#3807\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: materialize generators before result conversion, handle bytes gracefully by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3830\"\u003ePrefectHQ/fastmcp#3830\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix json_schema_to_type crashes on keywords, boolean schemas, empty enums, and name collisions by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3818\"\u003ePrefectHQ/fastmcp#3818\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: replace \u003ccode\u003eor\u003c/code\u003e with \u003ccode\u003eis not None\u003c/code\u003e checks for config/override merging by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3833\"\u003ePrefectHQ/fastmcp#3833\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: TransformedTool sync fn crash and schema mutation by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3823\"\u003ePrefectHQ/fastmcp#3823\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: cross-provider duplicate detection, error visibility, mask propagation by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3827\"\u003ePrefectHQ/fastmcp#3827\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: don't pass HTTP kwargs when transport is unspecified by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3838\"\u003ePrefectHQ/fastmcp#3838\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: strip title fields from tool schemas for Gemini 2.5 Flash compatibility by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3861\"\u003ePrefectHQ/fastmcp#3861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: retry when LLM returns text instead of calling final_response by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3850\"\u003ePrefectHQ/fastmcp#3850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise on unhandled content types in sampling handler dispatch chains by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3857\"\u003ePrefectHQ/fastmcp#3857\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken code examples in docs by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3869\"\u003ePrefectHQ/fastmcp#3869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: GoogleGenaiSamplingHandler leaks thought parts and gives unhelpful errors on empty responses by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3849\"\u003ePrefectHQ/fastmcp#3849\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/blob/main/docs/changelog.mdx\"\u003efastmcp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003chr /\u003e\n\u003ch2\u003etitle: \u0026quot;Changelog\u0026quot;\nicon: \u0026quot;list-check\u0026quot;\nrss: true\ntag: NEW\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.1\"\u003ev3.1.1: 'Tis But a Patch\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ePins \u003ccode\u003epydantic-monty\u003c/code\u003e below 0.0.8 to fix a breaking change in Monty that affects code mode. Monty 0.0.8 removed the \u003ccode\u003eexternal_functions\u003c/code\u003e constructor parameter, causing \u003ccode\u003eMontySandboxProvider\u003c/code\u003e to fail. This patch caps the version so existing installs work correctly.\u003c/p\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePin pydantic-monty below 0.0.8 to fix code mode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3497\"\u003e#3497\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.1.0...v3.1.1\"\u003ev3.1.0...v3.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.0\"\u003ev3.1.0: Code to Joy\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFastMCP 3.1 is the Code Mode release. The 3.0 architecture introduced providers and transforms as the extensibility layer — 3.1 puts that architecture to work, shipping the most requested capability since launch: servers that can find and execute code on behalf of agents, without requiring clients to know what tools exist.\u003c/p\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Search transforms for tool discovery by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3154\"\u003e#3154\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd experimental CodeMode transform by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3297\"\u003e#3297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Prefab Apps integration for MCP tool UIs by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3316\"\u003e#3316\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLazy-load heavy imports to reduce import time by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3295\"\u003e#3295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd http_client parameter to all token verifiers for connection pooling by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3300\"\u003e#3300\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd in-memory caching for token introspection results by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3298\"\u003e#3298\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SessionStart hook to install gh CLI in cloud sessions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3308\"\u003e#3308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty 0.0.19 type errors by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3310\"\u003e#3310\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCode Mode: Add resource limits to MontySandboxProvider by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3326\"\u003e#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept transforms as FastMCP init kwarg by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3324\"\u003e#3324\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSplit large test files to comply with loq line limit by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd -m/--module flag to \u003ccode\u003efastmcp run\u003c/code\u003e and \u003ccode\u003edev inspector\u003c/code\u003e by \u003ca href=\"https://github.com/dgenio\"\u003e\u003ccode\u003e@​dgenio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3331\"\u003e#3331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd search_result_serializer hook and serialize_tools_for_output_markdown by \u003ca href=\"https://github.com/MagnusS0\"\u003e\u003ccode\u003e@​MagnusS0\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3337\"\u003e#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd MultiAuth for composing multiple token verification sources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3335\"\u003e#3335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdds PropelAuth as an AuthProvider by \u003ca href=\"https://github.com/andrew-propelauth\"\u003e\u003ccode\u003e@​andrew-propelauth\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3358\"\u003e#3358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace vendored DI with uncalled-for by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3301\"\u003e#3301\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecompose CodeMode into composable discovery tools by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3354\"\u003e#3354\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(contrib): auto-sync MCPMixin decorators with from_function signatures by \u003ca href=\"https://github.com/AnkeshThakur\"\u003e\u003ccode\u003e@​AnkeshThakur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3323\"\u003e#3323\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Google GenAI Sampling Handler by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/2977\"\u003e#2977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ListTools, search limit, and catalog size annotation to CodeMode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3359\"\u003e#3359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow configuring FastMCP transport setting in the same way as other configuration by \u003ca href=\"https://github.com/jvdmr\"\u003e\u003ccode\u003e@​jvdmr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1796\"\u003e#1796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd include_unversioned option to VersionFilter by \u003ca href=\"https://github.com/yangbaechu\"\u003e\u003ccode\u003e@​yangbaechu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3349\"\u003e#3349\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/7d7607473d7713d9937cbbbe0bfc635976c511d3\"\u003e\u003ccode\u003e7d76074\u003c/code\u003e\u003c/a\u003e Stop pydantic 2.13 from leaking _WrappedResult docstring into tool output sch...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/b732a4a516e4a41f053e46dbd86e9520cf5178bf\"\u003e\u003ccode\u003eb732a4a\u003c/code\u003e\u003c/a\u003e Overhaul apps docs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3915\"\u003e#3915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/5c2ff1bd7b9844a3891149741de56a5e4d24621d\"\u003e\u003ccode\u003e5c2ff1b\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3914\"\u003e#3914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/f4f2ec07fbb611a25ce27e1b4f9b67f54bc2420a\"\u003e\u003ccode\u003ef4f2ec0\u003c/code\u003e\u003c/a\u003e Deprecate ctx.elicit() without response_type (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3916\"\u003e#3916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/338b80c3ae3b8c5ac3a7e094178c9f34eb286ea8\"\u003e\u003ccode\u003e338b80c\u003c/code\u003e\u003c/a\u003e chore(deps): bump the uv group across 2 directories with 1 update (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3913\"\u003e#3913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/110cd3adcb7a433923ed8ed4a8b23d076a313ab5\"\u003e\u003ccode\u003e110cd3a\u003c/code\u003e\u003c/a\u003e Add response_title and response_description to ctx.elicit() (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3912\"\u003e#3912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/311784617639d7b46490d863f2e4bb24be6361c5\"\u003e\u003ccode\u003e3117846\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3909\"\u003e#3909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/031c7e03b48330345bc4d1f82a9cc78ed269b07c\"\u003e\u003ccode\u003e031c7e0\u003c/code\u003e\u003c/a\u003e Fix RetryMiddleware not retrying tool errors (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3858\"\u003e#3858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/200d79e7d28f36b36c271621d9550aa3fb3c0aa7\"\u003e\u003ccode\u003e200d79e\u003c/code\u003e\u003c/a\u003e Enable PERF and T20 ruff rules (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3845\"\u003e#3845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/82f310fe61dba25de34f2be3e203555ccfc4181d\"\u003e\u003ccode\u003e82f310f\u003c/code\u003e\u003c/a\u003e AuthKit: auto-bind token audience to resource URL (RFC 8707) (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3905\"\u003e#3905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.0.0...v3.2.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/cap-alpha/cap-alpha-protocol/pull/954","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/cap-alpha%2Fcap-alpha-protocol/issues/954","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/954/packages"},{"uuid":"4442111726","node_id":"PR_kwDOQMPGcs7bVLZ4","number":1036,"state":"closed","title":"chore: bump fastmcp from 2.14.2 to 3.2.3 in /mcp","user":"dependabot[bot]","labels":["dependencies"],"assignees":["KaliszS"],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-21T01:43:31.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-14T00:32:34.000Z","updated_at":"2026-05-21T01:43:33.000Z","time_to_close":609057,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore","packages":[{"name":"fastmcp","old_version":"2.14.2","new_version":"3.2.3","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":"/mcp","ecosystem":"pip"},"body":"Bumps [fastmcp](https://github.com/PrefectHQ/fastmcp) from 2.14.2 to 3.2.3.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.3: Redis or Not\u003c/h2\u003e\n\u003cp\u003efakeredis 2.35.0 shipped an undocumented rename (\u003ccode\u003eFakeConnection\u003c/code\u003e → \u003ccode\u003eFakeAsyncRedisConnection\u003c/code\u003e) that broke pydocket's \u003ccode\u003ememory://\u003c/code\u003e backend, causing \u003ccode\u003efastmcp[tasks]\u003c/code\u003e installs to fail at startup with an \u003ccode\u003eImportError\u003c/code\u003e. This pins \u003ccode\u003efakeredis\u0026lt;2.35.0\u003c/code\u003e in the \u003ccode\u003etasks\u003c/code\u003e extra as a stopgap until a fixed pydocket ships.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePin fakeredis\u0026lt;2.35.0 in tasks extra by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3804\"\u003ePrefectHQ/fastmcp#3804\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument session state isolation across mount boundaries by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3801\"\u003ePrefectHQ/fastmcp#3801\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.2.2...v3.2.3\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.2.2...v3.2.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.2.2: Audience Appreciation\u003c/h2\u003e\n\u003cp\u003eThe Azure audience fix in 3.2.1 overcorrected: it switched token validation from \u003ccode\u003eclient_id\u003c/code\u003e to \u003ccode\u003eidentifier_uri\u003c/code\u003e, which fixed custom Application ID URIs but broke the default case where Azure AD v2 tokens set \u003ccode\u003eaud\u003c/code\u003e to the bare client ID GUID. Both formats are now accepted.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: accept both client_id and identifier_uri as Azure audience by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3797\"\u003ePrefectHQ/fastmcp#3797\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependencies 📦\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 2 directories with 1 update by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3795\"\u003ePrefectHQ/fastmcp#3795\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.2.1...v3.2.2\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.2.1...v3.2.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.2.1: Audience Participation\u003c/h2\u003e\n\u003cp\u003eMost of the fixes in this patch are about auth providers getting audience validation wrong. Cognito token verification was checking the \u003ccode\u003eaud\u003c/code\u003e JWT claim, but Cognito access tokens don't include one; they use \u003ccode\u003eclient_id\u003c/code\u003e instead. Azure was hardcoding the raw client ID as the expected audience, ignoring the \u003ccode\u003eidentifier_uri\u003c/code\u003e parameter even though Entra v2.0 tokens use the Application ID URI as \u003ccode\u003eaud\u003c/code\u003e. Both now validate correctly without changing the provider API. Consent cookies also had an unbounded growth problem in high-DCR-client environments, eventually blowing past reverse proxy header limits; they're now capped as an LRU.\u003c/p\u003e\n\u003cp\u003eOn the OpenAPI side, \u003ccode\u003enullable: true\u003c/code\u003e fields from 3.0 specs were leaking into tool input schemas as-is instead of being converted to JSON Schema's \u003ccode\u003etype: [\u0026quot;string\u0026quot;, \u0026quot;null\u0026quot;]\u003c/code\u003e. Server variable templates in base URLs (like \u003ccode\u003ehttps://{region}.api.example.com\u003c/code\u003e) were also being passed through raw instead of substituted with their defaults.\u003c/p\u003e\n\u003cp\u003eSmaller fixes: form submissions from Prefab UI now correctly handle unchecked boolean checkboxes, the client no longer crashes on error responses with empty or non-text content from third-party servers, and \u003ccode\u003easyncio.iscoroutinefunction\u003c/code\u003e no longer emits deprecation warnings on Python 3.14.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes ⚠️\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(google): use sub (user ID) for client_id instead of aud (app ID) by \u003ca href=\"https://github.com/shigechika\"\u003e\u003ccode\u003e@​shigechika\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3722\"\u003ePrefectHQ/fastmcp#3722\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: remove CSP from tool metadata, keep on resource only by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3754\"\u003ePrefectHQ/fastmcp#3754\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[codex] Add FastMCP docs telemetry by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3727\"\u003ePrefectHQ/fastmcp#3727\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: split SDK navigation into standalone $ref file by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3773\"\u003ePrefectHQ/fastmcp#3773\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: bump ty to \u0026gt;=0.0.29 and suppress new false positives by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3790\"\u003ePrefectHQ/fastmcp#3790\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: use explicit None checks for JWT exp validation by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3724\"\u003ePrefectHQ/fastmcp#3724\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/blob/main/docs/changelog.mdx\"\u003efastmcp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003chr /\u003e\n\u003ch2\u003etitle: \u0026quot;Changelog\u0026quot;\nicon: \u0026quot;list-check\u0026quot;\nrss: true\ntag: NEW\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.1\"\u003ev3.1.1: 'Tis But a Patch\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ePins \u003ccode\u003epydantic-monty\u003c/code\u003e below 0.0.8 to fix a breaking change in Monty that affects code mode. Monty 0.0.8 removed the \u003ccode\u003eexternal_functions\u003c/code\u003e constructor parameter, causing \u003ccode\u003eMontySandboxProvider\u003c/code\u003e to fail. This patch caps the version so existing installs work correctly.\u003c/p\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePin pydantic-monty below 0.0.8 to fix code mode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3497\"\u003e#3497\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.1.0...v3.1.1\"\u003ev3.1.0...v3.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.0\"\u003ev3.1.0: Code to Joy\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFastMCP 3.1 is the Code Mode release. The 3.0 architecture introduced providers and transforms as the extensibility layer — 3.1 puts that architecture to work, shipping the most requested capability since launch: servers that can find and execute code on behalf of agents, without requiring clients to know what tools exist.\u003c/p\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Search transforms for tool discovery by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3154\"\u003e#3154\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd experimental CodeMode transform by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3297\"\u003e#3297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Prefab Apps integration for MCP tool UIs by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3316\"\u003e#3316\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLazy-load heavy imports to reduce import time by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3295\"\u003e#3295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd http_client parameter to all token verifiers for connection pooling by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3300\"\u003e#3300\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd in-memory caching for token introspection results by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3298\"\u003e#3298\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SessionStart hook to install gh CLI in cloud sessions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3308\"\u003e#3308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty 0.0.19 type errors by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3310\"\u003e#3310\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCode Mode: Add resource limits to MontySandboxProvider by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3326\"\u003e#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept transforms as FastMCP init kwarg by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3324\"\u003e#3324\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSplit large test files to comply with loq line limit by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd -m/--module flag to \u003ccode\u003efastmcp run\u003c/code\u003e and \u003ccode\u003edev inspector\u003c/code\u003e by \u003ca href=\"https://github.com/dgenio\"\u003e\u003ccode\u003e@​dgenio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3331\"\u003e#3331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd search_result_serializer hook and serialize_tools_for_output_markdown by \u003ca href=\"https://github.com/MagnusS0\"\u003e\u003ccode\u003e@​MagnusS0\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3337\"\u003e#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd MultiAuth for composing multiple token verification sources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3335\"\u003e#3335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdds PropelAuth as an AuthProvider by \u003ca href=\"https://github.com/andrew-propelauth\"\u003e\u003ccode\u003e@​andrew-propelauth\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3358\"\u003e#3358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace vendored DI with uncalled-for by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3301\"\u003e#3301\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecompose CodeMode into composable discovery tools by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3354\"\u003e#3354\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(contrib): auto-sync MCPMixin decorators with from_function signatures by \u003ca href=\"https://github.com/AnkeshThakur\"\u003e\u003ccode\u003e@​AnkeshThakur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3323\"\u003e#3323\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Google GenAI Sampling Handler by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/2977\"\u003e#2977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ListTools, search limit, and catalog size annotation to CodeMode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3359\"\u003e#3359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow configuring FastMCP transport setting in the same way as other configuration by \u003ca href=\"https://github.com/jvdmr\"\u003e\u003ccode\u003e@​jvdmr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1796\"\u003e#1796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd include_unversioned option to VersionFilter by \u003ca href=\"https://github.com/yangbaechu\"\u003e\u003ccode\u003e@​yangbaechu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3349\"\u003e#3349\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/d1adb041eab26ee2d4b837c0a13bebe9af7f6fc7\"\u003e\u003ccode\u003ed1adb04\u003c/code\u003e\u003c/a\u003e Pin fakeredis\u0026lt;2.35.0 in tasks extra (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3804\"\u003e#3804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/0194c6e8ea905b1799cafe2d063dae1e461acf5f\"\u003e\u003ccode\u003e0194c6e\u003c/code\u003e\u003c/a\u003e Document session state isolation across mount boundaries (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3801\"\u003e#3801\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/6592aaa70e979aab0112165ed922ce92f03adaf8\"\u003e\u003ccode\u003e6592aaa\u003c/code\u003e\u003c/a\u003e fix: accept both client_id and identifier_uri as Azure audience (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3797\"\u003e#3797\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/9f0d8d3d125cce605227913baa62f34468361e71\"\u003e\u003ccode\u003e9f0d8d3\u003c/code\u003e\u003c/a\u003e chore(deps): bump the uv group across 2 directories with 1 update (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3795\"\u003e#3795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/556fd8fa42707774ce92899ba2049d8012035953\"\u003e\u003ccode\u003e556fd8f\u003c/code\u003e\u003c/a\u003e Harden client tool result error handling (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3778\"\u003e#3778\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/e064ba69de0d454416dc000fd7fa2c95efe00709\"\u003e\u003ccode\u003ee064ba6\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3791\"\u003e#3791\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/a3c5cc12d3daf7d65f824f2b8a7c553b96b98243\"\u003e\u003ccode\u003ea3c5cc1\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3757\"\u003e#3757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/f5be772403011c8518b78789a26eeab714d7fcee\"\u003e\u003ccode\u003ef5be772\u003c/code\u003e\u003c/a\u003e fix: bump ty to \u0026gt;=0.0.29 and suppress new false positives (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3790\"\u003e#3790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/f14456d63af321f6c30e034a89ea441385970c80\"\u003e\u003ccode\u003ef14456d\u003c/code\u003e\u003c/a\u003e docs: document forward_resource parameter on OAuthProxy (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3788\"\u003e#3788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/2b9d3eee0f93931deb031f424bef193e98f27204\"\u003e\u003ccode\u003e2b9d3ee\u003c/code\u003e\u003c/a\u003e fix: use identifier_uri as audience for Azure token validation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3787\"\u003e#3787\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v2.14.2...v3.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=fastmcp\u0026package-manager=uv\u0026previous-version=2.14.2\u0026new-version=3.2.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/the-momentum/open-wearables/pull/1036","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/the-momentum%2Fopen-wearables/issues/1036","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1036/packages"},{"uuid":"4425374585","node_id":"PR_kwDOENP6UM7aeu96","number":339,"state":"closed","title":"Bump fastmcp from 2.14.0 to 3.2.4","user":"dependabot[bot]","labels":["CherryPick","6.15.z"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-05-25T23:41:59.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-12T01:00:24.000Z","updated_at":"2026-05-25T23:42:01.000Z","time_to_close":1204895,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"fastmcp","old_version":"2.14.0","new_version":"3.2.4","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":null,"ecosystem":"pip"},"body":"Bumps [fastmcp](https://github.com/PrefectHQ/fastmcp) from 2.14.0 to 3.2.4.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.4: Patch Me If You Can\u003c/h2\u003e\n\u003cp\u003eA grab bag of fixes, hardening, and polish.\u003c/p\u003e\n\u003cp\u003eThe headline behavior change: background tasks are now scoped to the authorization context rather than the MCP session, so a task kicked off by an authenticated user survives session churn and stays tied to who started it. This is a breaking change for anyone relying on the old session-scoped semantics.\u003c/p\u003e\n\u003cp\u003eSecurity got three meaningful upgrades. \u003ccode\u003eFileUpload\u003c/code\u003e now validates actual decoded base64 size instead of trusting the client-reported number, so an attacker can't claim \u0026quot;10 bytes\u0026quot; and deliver 10MB. The proxy client stops forwarding inbound HTTP headers to unrelated remote servers — previously a header meant for server A could leak to server B. And AuthKit now auto-binds token audience to the resource URL per RFC 8707, closing a token-reuse gap across MCP resources.\u003c/p\u003e\n\u003cp\u003eSchema handling had a rough-edges pass. \u003ccode\u003ejson_schema_to_type\u003c/code\u003e no longer crashes on Python keywords, boolean schemas, empty enums, or name collisions, and we added a 232K-schema crash test from APIs.guru to keep it honest. Gemini 2.5 Flash compatibility is fixed by stripping \u003ccode\u003etitle\u003c/code\u003e fields the model rejects. Parameter descriptions are now extracted from docstrings automatically, so your tool signatures document themselves.\u003c/p\u003e\n\u003cp\u003ePlus a Keycloak OAuth provider for enterprise auth, improvements to \u003ccode\u003ectx.elicit()\u003c/code\u003e (new \u003ccode\u003eresponse_title\u003c/code\u003e/\u003ccode\u003eresponse_description\u003c/code\u003e, deprecation warning when called without \u003ccode\u003eresponse_type\u003c/code\u003e), and dozens of smaller fixes across transforms, retry middleware, resource templates, and client disconnect handling.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes ⚠️\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eScope tasks to authorization context, not session by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3800\"\u003ePrefectHQ/fastmcp#3800\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump pydocket\u0026gt;=0.19.0, drop fakeredis pin by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3822\"\u003ePrefectHQ/fastmcp#3822\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd real-world schema crash test (232K schemas from APIs.guru) by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3826\"\u003ePrefectHQ/fastmcp#3826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable 7 zero-violation ruff rules by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3841\"\u003ePrefectHQ/fastmcp#3841\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePromote 7 ty rules from ignore to warn by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3852\"\u003ePrefectHQ/fastmcp#3852\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace ___ with hash-based backend tool routing and per-tool prefab resources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3824\"\u003ePrefectHQ/fastmcp#3824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable 4 ruff rules (DTZ, ERA, ISC, INP) and fix 9 violations by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3842\"\u003ePrefectHQ/fastmcp#3842\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract parameter descriptions from docstrings by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3872\"\u003ePrefectHQ/fastmcp#3872\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: speed up schema crash test (CSafeLoader + xdist-safe aggregation) by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3873\"\u003ePrefectHQ/fastmcp#3873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest: bump OpenAPI init perf threshold to 200ms for Windows CI by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3879\"\u003ePrefectHQ/fastmcp#3879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: unify object-schema conversion through _object_schema_to_type by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3884\"\u003ePrefectHQ/fastmcp#3884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Keycloak OAuth Provider for Enterprise Authentication and local dev by \u003ca href=\"https://github.com/stephaneberle9\"\u003e\u003ccode\u003e@​stephaneberle9\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1937\"\u003ePrefectHQ/fastmcp#1937\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow auth providers to override protected resource base URLs by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3900\"\u003ePrefectHQ/fastmcp#3900\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable PERF and T20 ruff rules by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3845\"\u003ePrefectHQ/fastmcp#3845\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd response_title and response_description to ctx.elicit() by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3912\"\u003ePrefectHQ/fastmcp#3912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeprecate ctx.elicit() without response_type by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3916\"\u003ePrefectHQ/fastmcp#3916\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity 🔒\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValidate actual base64 data size in FileUpload, not client-reported size by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3816\"\u003ePrefectHQ/fastmcp#3816\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop forwarding inbound HTTP headers to unrelated remote servers by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3837\"\u003ePrefectHQ/fastmcp#3837\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAuthKit: auto-bind token audience to resource URL (RFC 8707) by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3905\"\u003ePrefectHQ/fastmcp#3905\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eVersion-check is_docket_available() to avoid transitive pydocket crash by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3807\"\u003ePrefectHQ/fastmcp#3807\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: materialize generators before result conversion, handle bytes gracefully by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3830\"\u003ePrefectHQ/fastmcp#3830\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix json_schema_to_type crashes on keywords, boolean schemas, empty enums, and name collisions by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3818\"\u003ePrefectHQ/fastmcp#3818\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: replace \u003ccode\u003eor\u003c/code\u003e with \u003ccode\u003eis not None\u003c/code\u003e checks for config/override merging by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3833\"\u003ePrefectHQ/fastmcp#3833\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: TransformedTool sync fn crash and schema mutation by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3823\"\u003ePrefectHQ/fastmcp#3823\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: cross-provider duplicate detection, error visibility, mask propagation by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3827\"\u003ePrefectHQ/fastmcp#3827\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: don't pass HTTP kwargs when transport is unspecified by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3838\"\u003ePrefectHQ/fastmcp#3838\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: strip title fields from tool schemas for Gemini 2.5 Flash compatibility by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3861\"\u003ePrefectHQ/fastmcp#3861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: retry when LLM returns text instead of calling final_response by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3850\"\u003ePrefectHQ/fastmcp#3850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise on unhandled content types in sampling handler dispatch chains by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3857\"\u003ePrefectHQ/fastmcp#3857\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken code examples in docs by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3869\"\u003ePrefectHQ/fastmcp#3869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: GoogleGenaiSamplingHandler leaks thought parts and gives unhelpful errors on empty responses by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3849\"\u003ePrefectHQ/fastmcp#3849\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/blob/main/docs/changelog.mdx\"\u003efastmcp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003chr /\u003e\n\u003ch2\u003etitle: \u0026quot;Changelog\u0026quot;\nicon: \u0026quot;list-check\u0026quot;\nrss: true\ntag: NEW\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.1\"\u003ev3.1.1: 'Tis But a Patch\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ePins \u003ccode\u003epydantic-monty\u003c/code\u003e below 0.0.8 to fix a breaking change in Monty that affects code mode. Monty 0.0.8 removed the \u003ccode\u003eexternal_functions\u003c/code\u003e constructor parameter, causing \u003ccode\u003eMontySandboxProvider\u003c/code\u003e to fail. This patch caps the version so existing installs work correctly.\u003c/p\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePin pydantic-monty below 0.0.8 to fix code mode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3497\"\u003e#3497\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.1.0...v3.1.1\"\u003ev3.1.0...v3.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.0\"\u003ev3.1.0: Code to Joy\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFastMCP 3.1 is the Code Mode release. The 3.0 architecture introduced providers and transforms as the extensibility layer — 3.1 puts that architecture to work, shipping the most requested capability since launch: servers that can find and execute code on behalf of agents, without requiring clients to know what tools exist.\u003c/p\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Search transforms for tool discovery by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3154\"\u003e#3154\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd experimental CodeMode transform by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3297\"\u003e#3297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Prefab Apps integration for MCP tool UIs by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3316\"\u003e#3316\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLazy-load heavy imports to reduce import time by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3295\"\u003e#3295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd http_client parameter to all token verifiers for connection pooling by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3300\"\u003e#3300\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd in-memory caching for token introspection results by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3298\"\u003e#3298\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SessionStart hook to install gh CLI in cloud sessions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3308\"\u003e#3308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty 0.0.19 type errors by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3310\"\u003e#3310\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCode Mode: Add resource limits to MontySandboxProvider by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3326\"\u003e#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept transforms as FastMCP init kwarg by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3324\"\u003e#3324\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSplit large test files to comply with loq line limit by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd -m/--module flag to \u003ccode\u003efastmcp run\u003c/code\u003e and \u003ccode\u003edev inspector\u003c/code\u003e by \u003ca href=\"https://github.com/dgenio\"\u003e\u003ccode\u003e@​dgenio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3331\"\u003e#3331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd search_result_serializer hook and serialize_tools_for_output_markdown by \u003ca href=\"https://github.com/MagnusS0\"\u003e\u003ccode\u003e@​MagnusS0\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3337\"\u003e#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd MultiAuth for composing multiple token verification sources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3335\"\u003e#3335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdds PropelAuth as an AuthProvider by \u003ca href=\"https://github.com/andrew-propelauth\"\u003e\u003ccode\u003e@​andrew-propelauth\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3358\"\u003e#3358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace vendored DI with uncalled-for by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3301\"\u003e#3301\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecompose CodeMode into composable discovery tools by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3354\"\u003e#3354\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(contrib): auto-sync MCPMixin decorators with from_function signatures by \u003ca href=\"https://github.com/AnkeshThakur\"\u003e\u003ccode\u003e@​AnkeshThakur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3323\"\u003e#3323\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Google GenAI Sampling Handler by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/2977\"\u003e#2977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ListTools, search limit, and catalog size annotation to CodeMode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3359\"\u003e#3359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow configuring FastMCP transport setting in the same way as other configuration by \u003ca href=\"https://github.com/jvdmr\"\u003e\u003ccode\u003e@​jvdmr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1796\"\u003e#1796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd include_unversioned option to VersionFilter by \u003ca href=\"https://github.com/yangbaechu\"\u003e\u003ccode\u003e@​yangbaechu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3349\"\u003e#3349\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/7d7607473d7713d9937cbbbe0bfc635976c511d3\"\u003e\u003ccode\u003e7d76074\u003c/code\u003e\u003c/a\u003e Stop pydantic 2.13 from leaking _WrappedResult docstring into tool output sch...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/b732a4a516e4a41f053e46dbd86e9520cf5178bf\"\u003e\u003ccode\u003eb732a4a\u003c/code\u003e\u003c/a\u003e Overhaul apps docs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3915\"\u003e#3915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/5c2ff1bd7b9844a3891149741de56a5e4d24621d\"\u003e\u003ccode\u003e5c2ff1b\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3914\"\u003e#3914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/f4f2ec07fbb611a25ce27e1b4f9b67f54bc2420a\"\u003e\u003ccode\u003ef4f2ec0\u003c/code\u003e\u003c/a\u003e Deprecate ctx.elicit() without response_type (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3916\"\u003e#3916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/338b80c3ae3b8c5ac3a7e094178c9f34eb286ea8\"\u003e\u003ccode\u003e338b80c\u003c/code\u003e\u003c/a\u003e chore(deps): bump the uv group across 2 directories with 1 update (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3913\"\u003e#3913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/110cd3adcb7a433923ed8ed4a8b23d076a313ab5\"\u003e\u003ccode\u003e110cd3a\u003c/code\u003e\u003c/a\u003e Add response_title and response_description to ctx.elicit() (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3912\"\u003e#3912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/311784617639d7b46490d863f2e4bb24be6361c5\"\u003e\u003ccode\u003e3117846\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3909\"\u003e#3909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/031c7e03b48330345bc4d1f82a9cc78ed269b07c\"\u003e\u003ccode\u003e031c7e0\u003c/code\u003e\u003c/a\u003e Fix RetryMiddleware not retrying tool errors (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3858\"\u003e#3858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/200d79e7d28f36b36c271621d9550aa3fb3c0aa7\"\u003e\u003ccode\u003e200d79e\u003c/code\u003e\u003c/a\u003e Enable PERF and T20 ruff rules (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3845\"\u003e#3845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/82f310fe61dba25de34f2be3e203555ccfc4181d\"\u003e\u003ccode\u003e82f310f\u003c/code\u003e\u003c/a\u003e AuthKit: auto-bind token audience to resource URL (RFC 8707) (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3905\"\u003e#3905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v2.14.0...v3.2.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=fastmcp\u0026package-manager=pip\u0026previous-version=2.14.0\u0026new-version=3.2.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/Gauravtalreja1/robottelo/pull/339","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gauravtalreja1%2Frobottelo/issues/339","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/339/packages"},{"uuid":"4416915939","node_id":"PR_kwDOR_1XrM7aDVSk","number":10,"state":"open","title":"chore(deps)(deps-dev): update fastmcp requirement from \u003c3,\u003e=2.10.5 to \u003e=2.10.5,\u003c4","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-10T21:39:32.000Z","updated_at":"2026-05-10T21:39:33.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)(deps-dev): update","packages":[{"name":"fastmcp","old_version":"\u003c3,\u003e=2.10.5","new_version":"\u003e=2.10.5,\u003c4","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [fastmcp](https://github.com/PrefectHQ/fastmcp) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.4: Patch Me If You Can\u003c/h2\u003e\n\u003cp\u003eA grab bag of fixes, hardening, and polish.\u003c/p\u003e\n\u003cp\u003eThe headline behavior change: background tasks are now scoped to the authorization context rather than the MCP session, so a task kicked off by an authenticated user survives session churn and stays tied to who started it. This is a breaking change for anyone relying on the old session-scoped semantics.\u003c/p\u003e\n\u003cp\u003eSecurity got three meaningful upgrades. \u003ccode\u003eFileUpload\u003c/code\u003e now validates actual decoded base64 size instead of trusting the client-reported number, so an attacker can't claim \u0026quot;10 bytes\u0026quot; and deliver 10MB. The proxy client stops forwarding inbound HTTP headers to unrelated remote servers — previously a header meant for server A could leak to server B. And AuthKit now auto-binds token audience to the resource URL per RFC 8707, closing a token-reuse gap across MCP resources.\u003c/p\u003e\n\u003cp\u003eSchema handling had a rough-edges pass. \u003ccode\u003ejson_schema_to_type\u003c/code\u003e no longer crashes on Python keywords, boolean schemas, empty enums, or name collisions, and we added a 232K-schema crash test from APIs.guru to keep it honest. Gemini 2.5 Flash compatibility is fixed by stripping \u003ccode\u003etitle\u003c/code\u003e fields the model rejects. Parameter descriptions are now extracted from docstrings automatically, so your tool signatures document themselves.\u003c/p\u003e\n\u003cp\u003ePlus a Keycloak OAuth provider for enterprise auth, improvements to \u003ccode\u003ectx.elicit()\u003c/code\u003e (new \u003ccode\u003eresponse_title\u003c/code\u003e/\u003ccode\u003eresponse_description\u003c/code\u003e, deprecation warning when called without \u003ccode\u003eresponse_type\u003c/code\u003e), and dozens of smaller fixes across transforms, retry middleware, resource templates, and client disconnect handling.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes ⚠️\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eScope tasks to authorization context, not session by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3800\"\u003ePrefectHQ/fastmcp#3800\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump pydocket\u0026gt;=0.19.0, drop fakeredis pin by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3822\"\u003ePrefectHQ/fastmcp#3822\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd real-world schema crash test (232K schemas from APIs.guru) by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3826\"\u003ePrefectHQ/fastmcp#3826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable 7 zero-violation ruff rules by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3841\"\u003ePrefectHQ/fastmcp#3841\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePromote 7 ty rules from ignore to warn by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3852\"\u003ePrefectHQ/fastmcp#3852\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace ___ with hash-based backend tool routing and per-tool prefab resources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3824\"\u003ePrefectHQ/fastmcp#3824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable 4 ruff rules (DTZ, ERA, ISC, INP) and fix 9 violations by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3842\"\u003ePrefectHQ/fastmcp#3842\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract parameter descriptions from docstrings by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3872\"\u003ePrefectHQ/fastmcp#3872\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: speed up schema crash test (CSafeLoader + xdist-safe aggregation) by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3873\"\u003ePrefectHQ/fastmcp#3873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest: bump OpenAPI init perf threshold to 200ms for Windows CI by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3879\"\u003ePrefectHQ/fastmcp#3879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: unify object-schema conversion through _object_schema_to_type by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3884\"\u003ePrefectHQ/fastmcp#3884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Keycloak OAuth Provider for Enterprise Authentication and local dev by \u003ca href=\"https://github.com/stephaneberle9\"\u003e\u003ccode\u003e@​stephaneberle9\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1937\"\u003ePrefectHQ/fastmcp#1937\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow auth providers to override protected resource base URLs by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3900\"\u003ePrefectHQ/fastmcp#3900\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable PERF and T20 ruff rules by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3845\"\u003ePrefectHQ/fastmcp#3845\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd response_title and response_description to ctx.elicit() by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3912\"\u003ePrefectHQ/fastmcp#3912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeprecate ctx.elicit() without response_type by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3916\"\u003ePrefectHQ/fastmcp#3916\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity 🔒\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValidate actual base64 data size in FileUpload, not client-reported size by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3816\"\u003ePrefectHQ/fastmcp#3816\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop forwarding inbound HTTP headers to unrelated remote servers by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3837\"\u003ePrefectHQ/fastmcp#3837\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAuthKit: auto-bind token audience to resource URL (RFC 8707) by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3905\"\u003ePrefectHQ/fastmcp#3905\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eVersion-check is_docket_available() to avoid transitive pydocket crash by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3807\"\u003ePrefectHQ/fastmcp#3807\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: materialize generators before result conversion, handle bytes gracefully by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3830\"\u003ePrefectHQ/fastmcp#3830\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix json_schema_to_type crashes on keywords, boolean schemas, empty enums, and name collisions by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3818\"\u003ePrefectHQ/fastmcp#3818\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: replace \u003ccode\u003eor\u003c/code\u003e with \u003ccode\u003eis not None\u003c/code\u003e checks for config/override merging by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3833\"\u003ePrefectHQ/fastmcp#3833\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: TransformedTool sync fn crash and schema mutation by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3823\"\u003ePrefectHQ/fastmcp#3823\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: cross-provider duplicate detection, error visibility, mask propagation by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3827\"\u003ePrefectHQ/fastmcp#3827\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: don't pass HTTP kwargs when transport is unspecified by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3838\"\u003ePrefectHQ/fastmcp#3838\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: strip title fields from tool schemas for Gemini 2.5 Flash compatibility by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3861\"\u003ePrefectHQ/fastmcp#3861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: retry when LLM returns text instead of calling final_response by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3850\"\u003ePrefectHQ/fastmcp#3850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise on unhandled content types in sampling handler dispatch chains by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3857\"\u003ePrefectHQ/fastmcp#3857\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken code examples in docs by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3869\"\u003ePrefectHQ/fastmcp#3869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: GoogleGenaiSamplingHandler leaks thought parts and gives unhelpful errors on empty responses by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3849\"\u003ePrefectHQ/fastmcp#3849\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/blob/main/docs/changelog.mdx\"\u003efastmcp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003chr /\u003e\n\u003ch2\u003etitle: \u0026quot;Changelog\u0026quot;\nicon: \u0026quot;list-check\u0026quot;\nrss: true\ntag: NEW\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.1\"\u003ev3.1.1: 'Tis But a Patch\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ePins \u003ccode\u003epydantic-monty\u003c/code\u003e below 0.0.8 to fix a breaking change in Monty that affects code mode. Monty 0.0.8 removed the \u003ccode\u003eexternal_functions\u003c/code\u003e constructor parameter, causing \u003ccode\u003eMontySandboxProvider\u003c/code\u003e to fail. This patch caps the version so existing installs work correctly.\u003c/p\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePin pydantic-monty below 0.0.8 to fix code mode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3497\"\u003e#3497\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.1.0...v3.1.1\"\u003ev3.1.0...v3.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.0\"\u003ev3.1.0: Code to Joy\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFastMCP 3.1 is the Code Mode release. The 3.0 architecture introduced providers and transforms as the extensibility layer — 3.1 puts that architecture to work, shipping the most requested capability since launch: servers that can find and execute code on behalf of agents, without requiring clients to know what tools exist.\u003c/p\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Search transforms for tool discovery by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3154\"\u003e#3154\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd experimental CodeMode transform by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3297\"\u003e#3297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Prefab Apps integration for MCP tool UIs by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3316\"\u003e#3316\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLazy-load heavy imports to reduce import time by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3295\"\u003e#3295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd http_client parameter to all token verifiers for connection pooling by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3300\"\u003e#3300\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd in-memory caching for token introspection results by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3298\"\u003e#3298\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SessionStart hook to install gh CLI in cloud sessions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3308\"\u003e#3308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty 0.0.19 type errors by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3310\"\u003e#3310\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCode Mode: Add resource limits to MontySandboxProvider by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3326\"\u003e#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept transforms as FastMCP init kwarg by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3324\"\u003e#3324\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSplit large test files to comply with loq line limit by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd -m/--module flag to \u003ccode\u003efastmcp run\u003c/code\u003e and \u003ccode\u003edev inspector\u003c/code\u003e by \u003ca href=\"https://github.com/dgenio\"\u003e\u003ccode\u003e@​dgenio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3331\"\u003e#3331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd search_result_serializer hook and serialize_tools_for_output_markdown by \u003ca href=\"https://github.com/MagnusS0\"\u003e\u003ccode\u003e@​MagnusS0\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3337\"\u003e#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd MultiAuth for composing multiple token verification sources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3335\"\u003e#3335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdds PropelAuth as an AuthProvider by \u003ca href=\"https://github.com/andrew-propelauth\"\u003e\u003ccode\u003e@​andrew-propelauth\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3358\"\u003e#3358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace vendored DI with uncalled-for by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3301\"\u003e#3301\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecompose CodeMode into composable discovery tools by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3354\"\u003e#3354\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(contrib): auto-sync MCPMixin decorators with from_function signatures by \u003ca href=\"https://github.com/AnkeshThakur\"\u003e\u003ccode\u003e@​AnkeshThakur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3323\"\u003e#3323\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Google GenAI Sampling Handler by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/2977\"\u003e#2977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ListTools, search limit, and catalog size annotation to CodeMode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3359\"\u003e#3359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow configuring FastMCP transport setting in the same way as other configuration by \u003ca href=\"https://github.com/jvdmr\"\u003e\u003ccode\u003e@​jvdmr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1796\"\u003e#1796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd include_unversioned option to VersionFilter by \u003ca href=\"https://github.com/yangbaechu\"\u003e\u003ccode\u003e@​yangbaechu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3349\"\u003e#3349\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/7d7607473d7713d9937cbbbe0bfc635976c511d3\"\u003e\u003ccode\u003e7d76074\u003c/code\u003e\u003c/a\u003e Stop pydantic 2.13 from leaking _WrappedResult docstring into tool output sch...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/b732a4a516e4a41f053e46dbd86e9520cf5178bf\"\u003e\u003ccode\u003eb732a4a\u003c/code\u003e\u003c/a\u003e Overhaul apps docs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3915\"\u003e#3915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/5c2ff1bd7b9844a3891149741de56a5e4d24621d\"\u003e\u003ccode\u003e5c2ff1b\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3914\"\u003e#3914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/f4f2ec07fbb611a25ce27e1b4f9b67f54bc2420a\"\u003e\u003ccode\u003ef4f2ec0\u003c/code\u003e\u003c/a\u003e Deprecate ctx.elicit() without response_type (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3916\"\u003e#3916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/338b80c3ae3b8c5ac3a7e094178c9f34eb286ea8\"\u003e\u003ccode\u003e338b80c\u003c/code\u003e\u003c/a\u003e chore(deps): bump the uv group across 2 directories with 1 update (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3913\"\u003e#3913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/110cd3adcb7a433923ed8ed4a8b23d076a313ab5\"\u003e\u003ccode\u003e110cd3a\u003c/code\u003e\u003c/a\u003e Add response_title and response_description to ctx.elicit() (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3912\"\u003e#3912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/311784617639d7b46490d863f2e4bb24be6361c5\"\u003e\u003ccode\u003e3117846\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3909\"\u003e#3909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/031c7e03b48330345bc4d1f82a9cc78ed269b07c\"\u003e\u003ccode\u003e031c7e0\u003c/code\u003e\u003c/a\u003e Fix RetryMiddleware not retrying tool errors (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3858\"\u003e#3858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/200d79e7d28f36b36c271621d9550aa3fb3c0aa7\"\u003e\u003ccode\u003e200d79e\u003c/code\u003e\u003c/a\u003e Enable PERF and T20 ruff rules (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3845\"\u003e#3845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/82f310fe61dba25de34f2be3e203555ccfc4181d\"\u003e\u003ccode\u003e82f310f\u003c/code\u003e\u003c/a\u003e AuthKit: auto-bind token audience to resource URL (RFC 8707) (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3905\"\u003e#3905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v2.10.5...v3.2.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/scops/engrama/pull/10","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/scops%2Fengrama/issues/10","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/10/packages"},{"uuid":"4413616593","node_id":"PR_kwDOSY8tQM7Z5h9F","number":7,"state":"open","title":"deps(deps): update fastmcp requirement from \u003e=0.2.0 to \u003e=3.2.4","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-09T19:27:34.000Z","updated_at":"2026-05-10T04:14:30.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps): update","packages":[{"name":"fastmcp","old_version":"\u003e=0.2.0","new_version":"\u003e=3.2.4","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [fastmcp](https://github.com/PrefectHQ/fastmcp) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.4: Patch Me If You Can\u003c/h2\u003e\n\u003cp\u003eA grab bag of fixes, hardening, and polish.\u003c/p\u003e\n\u003cp\u003eThe headline behavior change: background tasks are now scoped to the authorization context rather than the MCP session, so a task kicked off by an authenticated user survives session churn and stays tied to who started it. This is a breaking change for anyone relying on the old session-scoped semantics.\u003c/p\u003e\n\u003cp\u003eSecurity got three meaningful upgrades. \u003ccode\u003eFileUpload\u003c/code\u003e now validates actual decoded base64 size instead of trusting the client-reported number, so an attacker can't claim \u0026quot;10 bytes\u0026quot; and deliver 10MB. The proxy client stops forwarding inbound HTTP headers to unrelated remote servers — previously a header meant for server A could leak to server B. And AuthKit now auto-binds token audience to the resource URL per RFC 8707, closing a token-reuse gap across MCP resources.\u003c/p\u003e\n\u003cp\u003eSchema handling had a rough-edges pass. \u003ccode\u003ejson_schema_to_type\u003c/code\u003e no longer crashes on Python keywords, boolean schemas, empty enums, or name collisions, and we added a 232K-schema crash test from APIs.guru to keep it honest. Gemini 2.5 Flash compatibility is fixed by stripping \u003ccode\u003etitle\u003c/code\u003e fields the model rejects. Parameter descriptions are now extracted from docstrings automatically, so your tool signatures document themselves.\u003c/p\u003e\n\u003cp\u003ePlus a Keycloak OAuth provider for enterprise auth, improvements to \u003ccode\u003ectx.elicit()\u003c/code\u003e (new \u003ccode\u003eresponse_title\u003c/code\u003e/\u003ccode\u003eresponse_description\u003c/code\u003e, deprecation warning when called without \u003ccode\u003eresponse_type\u003c/code\u003e), and dozens of smaller fixes across transforms, retry middleware, resource templates, and client disconnect handling.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes ⚠️\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eScope tasks to authorization context, not session by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3800\"\u003ePrefectHQ/fastmcp#3800\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump pydocket\u0026gt;=0.19.0, drop fakeredis pin by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3822\"\u003ePrefectHQ/fastmcp#3822\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd real-world schema crash test (232K schemas from APIs.guru) by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3826\"\u003ePrefectHQ/fastmcp#3826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable 7 zero-violation ruff rules by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3841\"\u003ePrefectHQ/fastmcp#3841\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePromote 7 ty rules from ignore to warn by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3852\"\u003ePrefectHQ/fastmcp#3852\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace ___ with hash-based backend tool routing and per-tool prefab resources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3824\"\u003ePrefectHQ/fastmcp#3824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable 4 ruff rules (DTZ, ERA, ISC, INP) and fix 9 violations by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3842\"\u003ePrefectHQ/fastmcp#3842\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract parameter descriptions from docstrings by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3872\"\u003ePrefectHQ/fastmcp#3872\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: speed up schema crash test (CSafeLoader + xdist-safe aggregation) by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3873\"\u003ePrefectHQ/fastmcp#3873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest: bump OpenAPI init perf threshold to 200ms for Windows CI by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3879\"\u003ePrefectHQ/fastmcp#3879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: unify object-schema conversion through _object_schema_to_type by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3884\"\u003ePrefectHQ/fastmcp#3884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Keycloak OAuth Provider for Enterprise Authentication and local dev by \u003ca href=\"https://github.com/stephaneberle9\"\u003e\u003ccode\u003e@​stephaneberle9\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1937\"\u003ePrefectHQ/fastmcp#1937\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow auth providers to override protected resource base URLs by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3900\"\u003ePrefectHQ/fastmcp#3900\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable PERF and T20 ruff rules by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3845\"\u003ePrefectHQ/fastmcp#3845\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd response_title and response_description to ctx.elicit() by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3912\"\u003ePrefectHQ/fastmcp#3912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeprecate ctx.elicit() without response_type by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3916\"\u003ePrefectHQ/fastmcp#3916\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity 🔒\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValidate actual base64 data size in FileUpload, not client-reported size by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3816\"\u003ePrefectHQ/fastmcp#3816\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop forwarding inbound HTTP headers to unrelated remote servers by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3837\"\u003ePrefectHQ/fastmcp#3837\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAuthKit: auto-bind token audience to resource URL (RFC 8707) by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3905\"\u003ePrefectHQ/fastmcp#3905\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eVersion-check is_docket_available() to avoid transitive pydocket crash by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3807\"\u003ePrefectHQ/fastmcp#3807\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: materialize generators before result conversion, handle bytes gracefully by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3830\"\u003ePrefectHQ/fastmcp#3830\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix json_schema_to_type crashes on keywords, boolean schemas, empty enums, and name collisions by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3818\"\u003ePrefectHQ/fastmcp#3818\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: replace \u003ccode\u003eor\u003c/code\u003e with \u003ccode\u003eis not None\u003c/code\u003e checks for config/override merging by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3833\"\u003ePrefectHQ/fastmcp#3833\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: TransformedTool sync fn crash and schema mutation by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3823\"\u003ePrefectHQ/fastmcp#3823\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: cross-provider duplicate detection, error visibility, mask propagation by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3827\"\u003ePrefectHQ/fastmcp#3827\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: don't pass HTTP kwargs when transport is unspecified by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3838\"\u003ePrefectHQ/fastmcp#3838\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: strip title fields from tool schemas for Gemini 2.5 Flash compatibility by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3861\"\u003ePrefectHQ/fastmcp#3861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: retry when LLM returns text instead of calling final_response by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3850\"\u003ePrefectHQ/fastmcp#3850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise on unhandled content types in sampling handler dispatch chains by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3857\"\u003ePrefectHQ/fastmcp#3857\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken code examples in docs by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3869\"\u003ePrefectHQ/fastmcp#3869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: GoogleGenaiSamplingHandler leaks thought parts and gives unhelpful errors on empty responses by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3849\"\u003ePrefectHQ/fastmcp#3849\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/blob/main/docs/changelog.mdx\"\u003efastmcp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003chr /\u003e\n\u003ch2\u003etitle: \u0026quot;Changelog\u0026quot;\nicon: \u0026quot;list-check\u0026quot;\nrss: true\ntag: NEW\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.1\"\u003ev3.1.1: 'Tis But a Patch\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ePins \u003ccode\u003epydantic-monty\u003c/code\u003e below 0.0.8 to fix a breaking change in Monty that affects code mode. Monty 0.0.8 removed the \u003ccode\u003eexternal_functions\u003c/code\u003e constructor parameter, causing \u003ccode\u003eMontySandboxProvider\u003c/code\u003e to fail. This patch caps the version so existing installs work correctly.\u003c/p\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePin pydantic-monty below 0.0.8 to fix code mode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3497\"\u003e#3497\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.1.0...v3.1.1\"\u003ev3.1.0...v3.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.0\"\u003ev3.1.0: Code to Joy\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFastMCP 3.1 is the Code Mode release. The 3.0 architecture introduced providers and transforms as the extensibility layer — 3.1 puts that architecture to work, shipping the most requested capability since launch: servers that can find and execute code on behalf of agents, without requiring clients to know what tools exist.\u003c/p\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Search transforms for tool discovery by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3154\"\u003e#3154\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd experimental CodeMode transform by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3297\"\u003e#3297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Prefab Apps integration for MCP tool UIs by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3316\"\u003e#3316\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLazy-load heavy imports to reduce import time by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3295\"\u003e#3295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd http_client parameter to all token verifiers for connection pooling by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3300\"\u003e#3300\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd in-memory caching for token introspection results by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3298\"\u003e#3298\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SessionStart hook to install gh CLI in cloud sessions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3308\"\u003e#3308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty 0.0.19 type errors by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3310\"\u003e#3310\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCode Mode: Add resource limits to MontySandboxProvider by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3326\"\u003e#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept transforms as FastMCP init kwarg by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3324\"\u003e#3324\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSplit large test files to comply with loq line limit by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd -m/--module flag to \u003ccode\u003efastmcp run\u003c/code\u003e and \u003ccode\u003edev inspector\u003c/code\u003e by \u003ca href=\"https://github.com/dgenio\"\u003e\u003ccode\u003e@​dgenio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3331\"\u003e#3331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd search_result_serializer hook and serialize_tools_for_output_markdown by \u003ca href=\"https://github.com/MagnusS0\"\u003e\u003ccode\u003e@​MagnusS0\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3337\"\u003e#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd MultiAuth for composing multiple token verification sources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3335\"\u003e#3335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdds PropelAuth as an AuthProvider by \u003ca href=\"https://github.com/andrew-propelauth\"\u003e\u003ccode\u003e@​andrew-propelauth\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3358\"\u003e#3358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace vendored DI with uncalled-for by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3301\"\u003e#3301\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecompose CodeMode into composable discovery tools by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3354\"\u003e#3354\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(contrib): auto-sync MCPMixin decorators with from_function signatures by \u003ca href=\"https://github.com/AnkeshThakur\"\u003e\u003ccode\u003e@​AnkeshThakur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3323\"\u003e#3323\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Google GenAI Sampling Handler by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/2977\"\u003e#2977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ListTools, search limit, and catalog size annotation to CodeMode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3359\"\u003e#3359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow configuring FastMCP transport setting in the same way as other configuration by \u003ca href=\"https://github.com/jvdmr\"\u003e\u003ccode\u003e@​jvdmr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1796\"\u003e#1796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd include_unversioned option to VersionFilter by \u003ca href=\"https://github.com/yangbaechu\"\u003e\u003ccode\u003e@​yangbaechu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3349\"\u003e#3349\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/7d7607473d7713d9937cbbbe0bfc635976c511d3\"\u003e\u003ccode\u003e7d76074\u003c/code\u003e\u003c/a\u003e Stop pydantic 2.13 from leaking _WrappedResult docstring into tool output sch...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/b732a4a516e4a41f053e46dbd86e9520cf5178bf\"\u003e\u003ccode\u003eb732a4a\u003c/code\u003e\u003c/a\u003e Overhaul apps docs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3915\"\u003e#3915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/5c2ff1bd7b9844a3891149741de56a5e4d24621d\"\u003e\u003ccode\u003e5c2ff1b\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3914\"\u003e#3914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/f4f2ec07fbb611a25ce27e1b4f9b67f54bc2420a\"\u003e\u003ccode\u003ef4f2ec0\u003c/code\u003e\u003c/a\u003e Deprecate ctx.elicit() without response_type (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3916\"\u003e#3916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/338b80c3ae3b8c5ac3a7e094178c9f34eb286ea8\"\u003e\u003ccode\u003e338b80c\u003c/code\u003e\u003c/a\u003e chore(deps): bump the uv group across 2 directories with 1 update (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3913\"\u003e#3913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/110cd3adcb7a433923ed8ed4a8b23d076a313ab5\"\u003e\u003ccode\u003e110cd3a\u003c/code\u003e\u003c/a\u003e Add response_title and response_description to ctx.elicit() (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3912\"\u003e#3912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/311784617639d7b46490d863f2e4bb24be6361c5\"\u003e\u003ccode\u003e3117846\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3909\"\u003e#3909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/031c7e03b48330345bc4d1f82a9cc78ed269b07c\"\u003e\u003ccode\u003e031c7e0\u003c/code\u003e\u003c/a\u003e Fix RetryMiddleware not retrying tool errors (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3858\"\u003e#3858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/200d79e7d28f36b36c271621d9550aa3fb3c0aa7\"\u003e\u003ccode\u003e200d79e\u003c/code\u003e\u003c/a\u003e Enable PERF and T20 ruff rules (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3845\"\u003e#3845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/82f310fe61dba25de34f2be3e203555ccfc4181d\"\u003e\u003ccode\u003e82f310f\u003c/code\u003e\u003c/a\u003e AuthKit: auto-bind token audience to resource URL (RFC 8707) (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3905\"\u003e#3905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v0.2.0...v3.2.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n","html_url":"https://github.com/molnkontakt/odoo-mcp/pull/7","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/molnkontakt%2Fodoo-mcp/issues/7","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/7/packages"}],"issue_packages":[{"old_version":"3.2.4","new_version":"3.4.2","update_type":"minor","path":null,"pr_created_at":"2026-06-08T00:54:17.000Z","version_change":"3.2.4 → 3.4.2","issue":{"uuid":"4609297898","node_id":"PR_kwDOPQ3Q787jt-K9","number":34,"state":"closed","title":"chore(deps): bump fastmcp from 3.2.4 to 3.4.2","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-08T01:20:48.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-08T00:54:17.000Z","updated_at":"2026-06-08T01:20:50.000Z","time_to_close":1591,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"fastmcp","old_version":"3.2.4","new_version":"3.4.2","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":null,"ecosystem":"pip"},"body":"Bumps [fastmcp](https://github.com/PrefectHQ/fastmcp) from 3.2.4 to 3.4.2.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.4.2: Heads Up\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.4.2 restores JWT compatibility for providers that include private, non-critical JWS header parameters. Tokens from providers like Clerk can carry header metadata such as \u003ccode\u003ecat\u003c/code\u003e without being rejected before signature and claim validation, while unsupported critical headers are still rejected.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow private JWT headers by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4290\"\u003ePrefectHQ/fastmcp#4290\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocs: add v3.4.1 changelog entries by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4289\"\u003ePrefectHQ/fastmcp#4289\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.4.1...v3.4.2\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.4.1...v3.4.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.4.1: Floor It\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.4.1 floors Starlette at \u003ccode\u003e\u0026gt;=1.0.1\u003c/code\u003e so installs can no longer resolve to a version affected by CVE-2026-48710 — previously the dependency was only constrained transitively through \u003ccode\u003emcp\u003c/code\u003e, which allowed vulnerable versions. It also makes OAuthProxy log refresh-token cache misses instead of failing silently.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eEnhancements ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLog refresh-token misses in OAuthProxy instead of failing silently by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4276\"\u003ePrefectHQ/fastmcp#4276\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity 🔒\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd explicit starlette\u0026gt;=1.0.1 floor (CVE-2026-48710) by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4286\"\u003ePrefectHQ/fastmcp#4286\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument --notes-start-tag in release instructions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4275\"\u003ePrefectHQ/fastmcp#4275\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.4.0...v3.4.1\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.4.0...v3.4.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.4.0: Remote Control\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.4 is about reaching servers that live somewhere else. The headline is \u003ccode\u003efastmcp-remote\u003c/code\u003e, a standalone bridge that connects stdio-only MCP hosts to servers hosted over HTTP. Around it, this release hardens the proxy layer those remote connections depend on — making bridges fail loudly instead of silently, and keeping authenticated sessions alive across the long idle periods that remote clients are prone to.\u003c/p\u003e\n\u003ch2\u003efastmcp-remote\u003c/h2\u003e\n\u003cp\u003eSome MCP hosts still insist on launching a local stdio command, even when the server you want is already running over HTTP. FastMCP could already proxy a remote URL through \u003ccode\u003efastmcp run\u003c/code\u003e, but that pulls in the full server-runner surface. \u003ccode\u003efastmcp-remote\u003c/code\u003e is the small, single-purpose version: one URL in, one local stdio proxy out.\u003c/p\u003e\n\u003cpre lang=\"json\"\u003e\u003ccode\u003e{\n  \u0026quot;mcpServers\u0026quot;: {\n    \u0026quot;linear\u0026quot;: {\n      \u0026quot;command\u0026quot;: \u0026quot;uvx\u0026quot;,\n      \u0026quot;args\u0026quot;: [\u0026quot;fastmcp-remote\u0026quot;, \u0026quot;https://mcp.linear.app/mcp\u0026quot;]\n    }\n  }\n}\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOAuth is enabled automatically for HTTPS servers, with support for explicit bearer tokens and custom headers when you need them. The implementation stays on FastMCP primitives — \u003ccode\u003eClient\u003c/code\u003e, OAuth, \u003ccode\u003ecreate_proxy\u003c/code\u003e, and stdio — and credits the original npm \u003ccode\u003emcp-remote\u003c/code\u003e project for the command shape.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/3b8538e2422a1c43fdb69661c610de7985b785f2\"\u003e\u003ccode\u003e3b8538e\u003c/code\u003e\u003c/a\u003e Allow private JWT headers (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4290\"\u003e#4290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/0445c31feffa5581b1e47cbe3ea75eaabed18f9d\"\u003e\u003ccode\u003e0445c31\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4223\"\u003e#4223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/9261793ae0858f009b6550159287a4965da9d51f\"\u003e\u003ccode\u003e9261793\u003c/code\u003e\u003c/a\u003e Docs: add v3.4.1 changelog entries (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4289\"\u003e#4289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/e1b52d00fe579faf3b76a3364a5639aec9ad8014\"\u003e\u003ccode\u003ee1b52d0\u003c/code\u003e\u003c/a\u003e Add explicit starlette\u0026gt;=1.0.1 floor (CVE-2026-48710) (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4286\"\u003e#4286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/e58f386bacefe4283a8782b821ae0305c36bb073\"\u003e\u003ccode\u003ee58f386\u003c/code\u003e\u003c/a\u003e Log refresh-token misses in OAuthProxy instead of failing silently (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4276\"\u003e#4276\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/3f09c683cc440b308c17db5a8f9c89ce4449df6c\"\u003e\u003ccode\u003e3f09c68\u003c/code\u003e\u003c/a\u003e Document --notes-start-tag requirement in release instructions (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4275\"\u003e#4275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/e124bde34eeea66f5472e239c70cda247508da34\"\u003e\u003ccode\u003ee124bde\u003c/code\u003e\u003c/a\u003e Fix MDX syntax error in changelog (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4270\"\u003e#4270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/dae11bbc40fd4ef3cf0a61e1f2363a1630186ba8\"\u003e\u003ccode\u003edae11bb\u003c/code\u003e\u003c/a\u003e Backfill changelog and updates through v3.4.0 (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4269\"\u003e#4269\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/0f4f78c46491a001ba0b409ef643a6649428a951\"\u003e\u003ccode\u003e0f4f78c\u003c/code\u003e\u003c/a\u003e Fix resource templates with query params on proxied servers (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4251\"\u003e#4251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/1a06130fcfaece1d494bf444c1561e752d94c61a\"\u003e\u003ccode\u003e1a06130\u003c/code\u003e\u003c/a\u003e Fix GitHub MCP resource integration test (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4253\"\u003e#4253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.2.4...v3.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n","html_url":"https://github.com/briandconnelly/mcp-server-tempest/pull/34","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/briandconnelly%2Fmcp-server-tempest/issues/34","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/34/packages"}},{"old_version":"\u003e=3.2.4","new_version":"\u003e=3.4.2","update_type":"minor","path":null,"pr_created_at":"2026-06-07T23:22:36.000Z","version_change":"\u003e=3.2.4 → \u003e=3.4.2","issue":{"uuid":"4609052745","node_id":"PR_kwDOR5hRIs7jtMwf","number":37,"state":"open","title":"chore(deps): update fastmcp requirement from \u003e=3.2.4 to \u003e=3.4.2","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-06-07T23:22:36.000Z","updated_at":"2026-06-07T23:23:43.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): update","packages":[{"name":"fastmcp","old_version":"\u003e=3.2.4","new_version":"\u003e=3.4.2","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [fastmcp](https://github.com/PrefectHQ/fastmcp) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.4.2: Heads Up\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.4.2 restores JWT compatibility for providers that include private, non-critical JWS header parameters. Tokens from providers like Clerk can carry header metadata such as \u003ccode\u003ecat\u003c/code\u003e without being rejected before signature and claim validation, while unsupported critical headers are still rejected.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow private JWT headers by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4290\"\u003ePrefectHQ/fastmcp#4290\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocs: add v3.4.1 changelog entries by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4289\"\u003ePrefectHQ/fastmcp#4289\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.4.1...v3.4.2\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.4.1...v3.4.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/blob/main/docs/changelog.mdx\"\u003efastmcp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003chr /\u003e\n\u003ch2\u003etitle: \u0026quot;Changelog\u0026quot;\nicon: \u0026quot;list-check\u0026quot;\nrss: true\ntag: NEW\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.4.1\"\u003ev3.4.1: Floor It\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFastMCP 3.4.1 floors Starlette at \u003ccode\u003e\u0026gt;=1.0.1\u003c/code\u003e so installs can no longer resolve to a version affected by CVE-2026-48710, which was previously only constrained transitively through \u003ccode\u003emcp\u003c/code\u003e. It also makes OAuthProxy log refresh-token cache misses instead of failing silently.\u003c/p\u003e\n\u003ch3\u003eEnhancements ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLog refresh-token misses in OAuthProxy instead of failing silently by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4276\"\u003e#4276\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity 🔒\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd explicit starlette\u0026gt;=1.0.1 floor (CVE-2026-48710) by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4286\"\u003e#4286\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument --notes-start-tag in release instructions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4275\"\u003e#4275\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.4.0...v3.4.1\"\u003ev3.4.0...v3.4.1\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.4.0\"\u003ev3.4.0: Remote Control\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFastMCP 3.4 is about reaching servers that live somewhere else. The headline is \u003ccode\u003efastmcp-remote\u003c/code\u003e, a standalone bridge that connects stdio-only MCP hosts to servers hosted over HTTP. Around it, the proxy layer those connections depend on is hardened: a proxy now forwards \u003ccode\u003einitialize\u003c/code\u003e upstream and fails loudly when the backend is missing or misconfigured, instead of reporting a connected-but-empty proxy. And FastMCP-issued access tokens can now outlive short-lived upstream tokens, so authenticated sessions survive the long idle periods remote clients are prone to.\u003c/p\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd fastmcp-remote bridge package by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4208\"\u003e#4208\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes ⚠️\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eForward proxy initialize as bridge behavior by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4228\"\u003e#4228\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eci: require external PRs to link a tracked issue by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4173\"\u003e#4173\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: new options --host and --no-log-panel | --log-panel  to cli dev apps by \u003ca href=\"https://github.com/itaru2622\"\u003e\u003ccode\u003e@​itaru2622\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4123\"\u003e#4123\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd valid_scopes and extra_authorize_params to WorkOSProvider by \u003ca href=\"https://github.com/tiagoskaneta\"\u003e\u003ccode\u003e@​tiagoskaneta\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4135\"\u003e#4135\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd token_expiry_threshold_seconds for proactive token refresh by \u003ca href=\"https://github.com/mohankumarelec\"\u003e\u003ccode\u003e@​mohankumarelec\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4142\"\u003e#4142\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd review-issue skill for triaging gated external contributions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4212\"\u003e#4212\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd contract gate to review-issue skill by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4214\"\u003e#4214\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLet ToolResult return an error result via is_error by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4217\"\u003e#4217\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate published docs after PyPI release by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4211\"\u003e#4211\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow pre-bound HTTP sockets by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4222\"\u003e#4222\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd targeted coverage tests by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4230\"\u003e#4230\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade ty to 0.0.39 by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4225\"\u003e#4225\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecouple FastMCP access token lifetime from upstream expires_in by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4254\"\u003e#4254\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity 🔒\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat(code-mode): default sandbox limits and per-execution tool-call cap by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4170\"\u003e#4170\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSecurity: Fix 3 findings in GitHub Actions workflows by \u003ca href=\"https://github.com/jpr5\"\u003e\u003ccode\u003e@​jpr5\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4183\"\u003e#4183\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/3b8538e2422a1c43fdb69661c610de7985b785f2\"\u003e\u003ccode\u003e3b8538e\u003c/code\u003e\u003c/a\u003e Allow private JWT headers (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4290\"\u003e#4290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/0445c31feffa5581b1e47cbe3ea75eaabed18f9d\"\u003e\u003ccode\u003e0445c31\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4223\"\u003e#4223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/9261793ae0858f009b6550159287a4965da9d51f\"\u003e\u003ccode\u003e9261793\u003c/code\u003e\u003c/a\u003e Docs: add v3.4.1 changelog entries (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4289\"\u003e#4289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/e1b52d00fe579faf3b76a3364a5639aec9ad8014\"\u003e\u003ccode\u003ee1b52d0\u003c/code\u003e\u003c/a\u003e Add explicit starlette\u0026gt;=1.0.1 floor (CVE-2026-48710) (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4286\"\u003e#4286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/e58f386bacefe4283a8782b821ae0305c36bb073\"\u003e\u003ccode\u003ee58f386\u003c/code\u003e\u003c/a\u003e Log refresh-token misses in OAuthProxy instead of failing silently (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4276\"\u003e#4276\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/3f09c683cc440b308c17db5a8f9c89ce4449df6c\"\u003e\u003ccode\u003e3f09c68\u003c/code\u003e\u003c/a\u003e Document --notes-start-tag requirement in release instructions (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4275\"\u003e#4275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/e124bde34eeea66f5472e239c70cda247508da34\"\u003e\u003ccode\u003ee124bde\u003c/code\u003e\u003c/a\u003e Fix MDX syntax error in changelog (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4270\"\u003e#4270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/dae11bbc40fd4ef3cf0a61e1f2363a1630186ba8\"\u003e\u003ccode\u003edae11bb\u003c/code\u003e\u003c/a\u003e Backfill changelog and updates through v3.4.0 (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4269\"\u003e#4269\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/0f4f78c46491a001ba0b409ef643a6649428a951\"\u003e\u003ccode\u003e0f4f78c\u003c/code\u003e\u003c/a\u003e Fix resource templates with query params on proxied servers (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4251\"\u003e#4251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/1a06130fcfaece1d494bf444c1561e752d94c61a\"\u003e\u003ccode\u003e1a06130\u003c/code\u003e\u003c/a\u003e Fix GitHub MCP resource integration test (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4253\"\u003e#4253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.2.4...v3.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/stevesimpson418/mcp-repo-template/pull/37","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/stevesimpson418%2Fmcp-repo-template/issues/37","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/37/packages"}},{"old_version":"3.2.4","new_version":"3.3.1","update_type":"minor","path":null,"pr_created_at":"2026-06-04T04:16:45.000Z","version_change":"3.2.4 → 3.3.1","issue":{"uuid":"4585728906","node_id":"PR_kwDORxQeyM7ihdpL","number":74,"state":"closed","title":"chore(deps): bump the python-deps group across 1 directory with 12 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-11T02:16:40.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-04T04:16:45.000Z","updated_at":"2026-06-11T02:16:42.000Z","time_to_close":597595,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-deps","update_count":12,"packages":[{"name":"pydantic","old_version":"2.13.3","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.14.0","new_version":"2.14.1","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"click","old_version":"8.3.2","new_version":"8.4.1","repository_url":"https://github.com/pallets/click"},{"name":"fastmcp","old_version":"3.2.4","new_version":"3.3.1","repository_url":"https://github.com/PrefectHQ/fastmcp"},{"name":"pytest-asyncio","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"ruff","old_version":"0.15.11","new_version":"0.15.14","repository_url":"https://github.com/astral-sh/ruff"},{"name":"mypy","old_version":"1.20.2","new_version":"2.1.0","repository_url":"https://github.com/python/mypy"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [fastapi[standard]](https://github.com/fastapi/fastapi), [sqlalchemy[asyncio]](https://github.com/sqlalchemy/sqlalchemy), [pydantic](https://github.com/pydantic/pydantic), [pydantic-settings](https://github.com/pydantic/pydantic-settings), [click](https://github.com/pallets/click), [fastmcp](https://github.com/PrefectHQ/fastmcp), [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio), [coverage[toml]](https://github.com/coveragepy/coveragepy), [ruff](https://github.com/astral-sh/ruff), [mypy](https://github.com/python/mypy), [types-pyyaml](https://github.com/python/typeshed) and [types-requests](https://github.com/python/typeshed) to permit the latest version.\nUpdates `fastapi[standard]` to 0.136.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi[standard]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.136.3\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Do not accept underscore headers when using \u003ccode\u003econvert_underscores=True\u003c/code\u003e (the default). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15589\"\u003e#15589\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/82064857539e6286522c347b4b11331b48dd2378\"\u003e\u003ccode\u003e8206485\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.136.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c910e0139f983d0e04e2d1d235cd71803afeae34\"\u003e\u003ccode\u003ec910e01\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/063b5bf582d31fb155cc6bc6f88cf512329d0fd5\"\u003e\u003ccode\u003e063b5bf\u003c/code\u003e\u003c/a\u003e ♻️ Do not accept underscore headers when using \u003ccode\u003econvert_underscores=True\u003c/code\u003e (th...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/22b02e26f9e8c7e32bd8266e2b0ebe8bb3a0db2b\"\u003e\u003ccode\u003e22b02e2\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.136.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/3b252a2a22ba27a8ab83d6bde7d9cddbc5bf738e\"\u003e\u003ccode\u003e3b252a2\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c7fb7851b3389f24c51701d705458989be53ccbb\"\u003e\u003ccode\u003ec7fb785\u003c/code\u003e\u003c/a\u003e ♻️ Validate Server Sent Event fields to avoid applications from sending broke...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cb83b83dcf78eab4ea17d504db5abcda705fbdc4\"\u003e\u003ccode\u003ecb83b83\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/00f805cec94c0bf48c1f9a563535a3ab2e6f90ab\"\u003e\u003ccode\u003e00f805c\u003c/code\u003e\u003c/a\u003e ✅ Update tests, don't double dispose the engine (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15587\"\u003e#15587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/3675137523dc167981aa3a3c44599b4f3079ccd8\"\u003e\u003ccode\u003e3675137\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7b57e42986bb4d40c9eb6580537d13fb8e76097e\"\u003e\u003ccode\u003e7b57e42\u003c/code\u003e\u003c/a\u003e 📝 Document \u003ccode\u003e--entrypoint\u003c/code\u003e CLI option (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15464\"\u003e#15464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.136.0...0.136.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy[asyncio]` to 2.0.50\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy[asyncio]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.50\u003c/h1\u003e\n\u003cp\u003eReleased: May 24, 2026\u003c/p\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue where using \u003ccode\u003e_orm.joinedload()\u003c/code\u003e with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e targeting a joined-table subclass combined\nwith \u003ccode\u003ePropComparator.and_()\u003c/code\u003e referencing a column on that subclass\nwould generate invalid SQL, where the subclass column was not adapted to\nthe subquery alias.  Pull request courtesy Joaquin Hui Gomez.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13203\"\u003e#13203\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue where the presence of a \u003ccode\u003eSessionEvents.do_orm_execute()\u003c/code\u003e\nevent hook would cause internal execution options such as \u003ccode\u003eyield_per\u003c/code\u003e and\nloader-specific state from the first \u003ccode\u003eorm_pre_session_exec\u003c/code\u003e pass to leak\ninto the second pass, leading to errors when using relationship loaders\nsuch as \u003ccode\u003eselectinload()\u003c/code\u003e and \u003ccode\u003eimmediateload()\u003c/code\u003e.  The execution\noptions passed to the second compilation pass are now based on the original\noptions plus only the explicit updates made via\n\u003ccode\u003eORMExecuteState.update_execution_options()\u003c/code\u003e within the event hook.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13301\"\u003e#13301\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue where using \u003ccode\u003e_orm.with_polymorphic()\u003c/code\u003e on a leaf class (a\nsubclass with no further descendants) or a non-inherited class would fail\nwith an \u003ccode\u003eAttributeError\u003c/code\u003e when used in an ORM statement, due to\n\u003ccode\u003e_orm.configure_mappers()\u003c/code\u003e not being triggered implicitly. The fix\nensures that \u003ccode\u003eAliasedInsp\u003c/code\u003e participates in the \u003ccode\u003e_post_inspect\u003c/code\u003e\nhook, triggering mapper configuration during ORM statement compilation.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13319\"\u003e#13319\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where floor division (\u003ccode\u003e//\u003c/code\u003e) between a \u003ccode\u003eFloat\u003c/code\u003e or\n\u003ccode\u003eNumeric\u003c/code\u003e numerator and an \u003ccode\u003eInteger\u003c/code\u003e denominator would omit\nthe \u003ccode\u003eFLOOR()\u003c/code\u003e SQL wrapper on dialects where\n\u003ccode\u003eDialect.div_is_floordiv\u003c/code\u003e is \u003ccode\u003eTrue\u003c/code\u003e (the default, including\nPostgreSQL and SQLite).  \u003ccode\u003eFLOOR()\u003c/code\u003e is now applied if either the\ndenominator or the numerator is a non-integer, so that expressions such as\n\u003ccode\u003efloat_col // int_col\u003c/code\u003e render as \u003ccode\u003eFLOOR(float_col / int_col)\u003c/code\u003e instead\nof the incorrect \u003ccode\u003efloat_col / int_col\u003c/code\u003e.  Pull request courtesy r266-tech.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10528\"\u003e#10528\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epostgresql\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.13.3 to 2.13.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/cf67d4b3193c3fe43ede18612ed62785eee11382\"\u003e\u003ccode\u003ecf67d4b\u003c/code\u003e\u003c/a\u003e Fix linting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f0d8a214a5803036db46a56b1f62f1e56b81d662\"\u003e\u003ccode\u003ef0d8a21\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/5e3fe1d41a00f441204241c66078003ae0391f9a\"\u003e\u003ccode\u003e5e3fe1d\u003c/code\u003e\u003c/a\u003e Check for pydantic tag pattern in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7f9edcc2a191d2eaa9751220eb910914e716a686\"\u003e\u003ccode\u003e7f9edcc\u003c/code\u003e\u003c/a\u003e Document tagging conventions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b46a0c9b8a4dd967fda8ec1a92f6437076bf262c\"\u003e\u003ccode\u003eb46a0c9\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/50629c851e61d887d5420452c311ec6203f1f400\"\u003e\u003ccode\u003e50629c8\u003c/code\u003e\u003c/a\u003e Update to PyPy 7.3.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8522ebb71e5e9a6f7188af5f009f01785b8cf725\"\u003e\u003ccode\u003e8522ebb\u003c/code\u003e\u003c/a\u003e Preserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a37f3aff090ca342dc5f48304889963530b993f8\"\u003e\u003ccode\u003ea37f3af\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003eMISSING\u003c/code\u003e sentinel test to work with unreleased \u003ccode\u003etyping_extensions\u003c/code\u003e ver...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/909259a9df660518033aa686b689f045a6eaf9d2\"\u003e\u003ccode\u003e909259a\u003c/code\u003e\u003c/a\u003e Remove Logfire example in documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c4174c366606fc2dc46cb806833a080aefa77df\"\u003e\u003ccode\u003e2c4174c\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.155 to 0.2.185\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-settings` from 2.14.0 to 2.14.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-settings/releases\"\u003epydantic-settings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the python-packages group with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/850\"\u003epydantic/pydantic-settings#850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 5 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/854\"\u003epydantic/pydantic-settings#854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/853\"\u003epydantic/pydantic-settings#853\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/856\"\u003epydantic/pydantic-settings#856\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix field named \u003ccode\u003ecls\u003c/code\u003e conflicting with classmethod parameter by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/858\"\u003epydantic/pydantic-settings#858\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare release 2.14.1 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/859\"\u003epydantic/pydantic-settings#859\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.14.0...v2.14.1\"\u003ehttps://github.com/pydantic/pydantic-settings/compare/v2.14.0...v2.14.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/e95c30bec8cfaee88ee275138c064aea97a25bdf\"\u003e\u003ccode\u003ee95c30b\u003c/code\u003e\u003c/a\u003e Prepare release 2.14.1 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/859\"\u003e#859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/0c8734581b6cf70a995afad603ac456631d00621\"\u003e\u003ccode\u003e0c87345\u003c/code\u003e\u003c/a\u003e Fix field named \u003ccode\u003ecls\u003c/code\u003e conflicting with classmethod parameter (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/858\"\u003e#858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/7bd0072795a800065b42210b6dca90fc9b83daf7\"\u003e\u003ccode\u003e7bd0072\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 2 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/856\"\u003e#856\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/b03e573d017ed48e1c2774a5e0b715db9766c76b\"\u003e\u003ccode\u003eb03e573\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/853\"\u003e#853\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/eaa3b434938411ec8a3717ea646614561e713f51\"\u003e\u003ccode\u003eeaa3b43\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 5 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/854\"\u003e#854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/9f95615c24c6813c1d7d203576581a79cb6d9e8e\"\u003e\u003ccode\u003e9f95615\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/850\"\u003e#850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.14.0...v2.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.3.2 to 8.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.4.1\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.4.1/\"\u003ehttps://pypi.org/project/click/8.4.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-4-1\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-4-1\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/32?closed=1\"\u003ehttps://github.com/pallets/click/milestone/32?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eget_parameter_source()\u003c/code\u003e is available during eager callbacks and type conversion again. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3458\"\u003e#3458\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3484\"\u003e#3484\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eZsh completion scripts parse correctly on Windows. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3277\"\u003e#3277\u003c/a\u003e # 3466\u003c/li\u003e\n\u003cli\u003eShell completion of \u003ccode\u003eChoice\u003c/code\u003e \u003ccode\u003eEnum\u003c/code\u003e values produces a valid completion result. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3015\"\u003e#3015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix empty byte-string handling in echo. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3487\"\u003e#3487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix closed file error with \u003ccode\u003eecho_via_pager\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3449\"\u003e#3449\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.4.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.4.0/\"\u003ehttps://pypi.org/project/click/8.4.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-4-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-4-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/30\"\u003ehttps://github.com/pallets/click/milestone/30\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eParamType\u003c/code\u003e typing improvements. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3371\"\u003e#3371\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParamType\u003c/code\u003e is now a generic abstract base class,\nparameterized by its converted value type.\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.convert\u003c/code\u003e return types are narrowed on all\nconcrete types (\u003ccode\u003estr\u003c/code\u003e for :class:\u003ccode\u003eSTRING\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e for\n:class:\u003ccode\u003eINT\u003c/code\u003e, etc.).\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.to_info_dict\u003c/code\u003e returns specific\n:class:\u003ccode\u003e~typing.TypedDict\u003c/code\u003e subclasses instead of\n\u003ccode\u003edict[str, Any]\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:class:\u003ccode\u003eCompositeParamType\u003c/code\u003e and the number-range base are now\ngeneric with abstract methods.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRefactor \u003ccode\u003econvert_type\u003c/code\u003e to extract type inference into a private\n\u003ccode\u003e_guess_type\u003c/code\u003e helper, and add :func:\u003ccode\u003etyping.overload\u003c/code\u003e signatures.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3372\"\u003e#3372\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eParameter\u003c/code\u003e typing improvements. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2805\"\u003e#2805\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParameter\u003c/code\u003e is now an abstract base class, making explicit\nthat it cannot be instantiated directly.\u003c/li\u003e\n\u003cli\u003e:attr:\u003ccode\u003eParameter.name\u003c/code\u003e is now \u003ccode\u003estr\u003c/code\u003e instead of \u003ccode\u003estr | None\u003c/code\u003e.\nWhen \u003ccode\u003eexpose_value=False\u003c/code\u003e, the name is set to \u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e instead\nof \u003ccode\u003eNone\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ectx\u003c/code\u003e parameter of :meth:\u003ccode\u003eParameter.get_error_hint\u003c/code\u003e is now\ntyped as \u003ccode\u003eContext | None\u003c/code\u003e, matching the runtime behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSplit string values from \u003ccode\u003edefault_map\u003c/code\u003e for parameters with \u003ccode\u003enargs \u0026gt; 1\u003c/code\u003e\nor :class:\u003ccode\u003eTuple\u003c/code\u003e type, matching environment variable behavior.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.4.1\u003c/h2\u003e\n\u003cp\u003eReleased 2026-05-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eget_parameter_source()\u003c/code\u003e is available during eager callbacks and type\nconversion again. :issue:\u003ccode\u003e3458\u003c/code\u003e :issue:\u003ccode\u003e3484\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eZsh completion scripts parse correctly on Windows. :issue:\u003ccode\u003e3277\u003c/code\u003e :pr:\u003ccode\u003e3466\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eShell completion of \u003ccode\u003eChoice\u003c/code\u003e \u003ccode\u003eEnum\u003c/code\u003e values produces a valid completion\nresult. :issue:\u003ccode\u003e3015\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix empty byte-string handling in echo. :issue:\u003ccode\u003e3487\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix closed file error with \u003ccode\u003eecho_via_pager\u003c/code\u003e. :issue:\u003ccode\u003e3449\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.4.0\u003c/h2\u003e\n\u003cp\u003eReleased 2026-05-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e:class:\u003ccode\u003eParamType\u003c/code\u003e typing improvements. :pr:\u003ccode\u003e3371\u003c/code\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParamType\u003c/code\u003e is now a generic abstract base class,\nparameterized by its converted value type.\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.convert\u003c/code\u003e return types are narrowed on all\nconcrete types (\u003ccode\u003estr\u003c/code\u003e for :class:\u003ccode\u003eSTRING\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e for\n:class:\u003ccode\u003eINT\u003c/code\u003e, etc.).\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.to_info_dict\u003c/code\u003e returns specific\n:class:\u003ccode\u003e~typing.TypedDict\u003c/code\u003e subclasses instead of\n\u003ccode\u003edict[str, Any]\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:class:\u003ccode\u003eCompositeParamType\u003c/code\u003e and the number-range base are now\ngeneric with abstract methods.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRefactor \u003ccode\u003econvert_type\u003c/code\u003e to extract type inference into a private\n\u003ccode\u003e_guess_type\u003c/code\u003e helper, and add :func:\u003ccode\u003etyping.overload\u003c/code\u003e signatures.\n:pr:\u003ccode\u003e3372\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e:class:\u003ccode\u003eParameter\u003c/code\u003e typing improvements. :pr:\u003ccode\u003e2805\u003c/code\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParameter\u003c/code\u003e is now an abstract base class, making explicit\nthat it cannot be instantiated directly.\u003c/li\u003e\n\u003cli\u003e:attr:\u003ccode\u003eParameter.name\u003c/code\u003e is now \u003ccode\u003estr\u003c/code\u003e instead of \u003ccode\u003estr | None\u003c/code\u003e.\nWhen \u003ccode\u003eexpose_value=False\u003c/code\u003e, the name is set to \u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e instead\nof \u003ccode\u003eNone\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ectx\u003c/code\u003e parameter of :meth:\u003ccode\u003eParameter.get_error_hint\u003c/code\u003e is now\ntyped as \u003ccode\u003eContext | None\u003c/code\u003e, matching the runtime behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSplit string values from \u003ccode\u003edefault_map\u003c/code\u003e for parameters with \u003ccode\u003enargs \u0026gt; 1\u003c/code\u003e\nor :class:\u003ccode\u003eTuple\u003c/code\u003e type, matching environment variable behavior.\n:issue:\u003ccode\u003e2745\u003c/code\u003e :pr:\u003ccode\u003e3364\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAuto-detect \u003ccode\u003etype=UNPROCESSED\u003c/code\u003e for \u003ccode\u003eflag_value\u003c/code\u003e of non-basic types\n(not \u003ccode\u003estr\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e, \u003ccode\u003efloat\u003c/code\u003e, or \u003ccode\u003ebool\u003c/code\u003e), so programmer-provided\nPython objects like classes and enum members are passed through unchanged\ninstead of being stringified. Previously \u003ccode\u003etype=click.UNPROCESSED\u003c/code\u003e had\nto be set explicitly. :issue:\u003ccode\u003e2012\u003c/code\u003e :pr:\u003ccode\u003e3363\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/6eeb50e948ea136db145280f6f5dd52eca3fa7e5\"\u003e\u003ccode\u003e6eeb50e\u003c/code\u003e\u003c/a\u003e release version 8.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/67921d5b71584112eebcbf89596b5f0e6d14c49f\"\u003e\u003ccode\u003e67921d5\u003c/code\u003e\u003c/a\u003e change log and doc fixes (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3495\"\u003e#3495\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/9c41f46a4015700489ad009266edf1f3893d01d1\"\u003e\u003ccode\u003e9c41f46\u003c/code\u003e\u003c/a\u003e Fix changelog and version admonitions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/6cb34774f20598aa288332f8da02c5aee85448a6\"\u003e\u003ccode\u003e6cb3477\u003c/code\u003e\u003c/a\u003e fix skip condition\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/5ee8e3123d8ddece6c47eff9a7a7d4ca478c4f37\"\u003e\u003ccode\u003e5ee8e31\u003c/code\u003e\u003c/a\u003e fix I/O operation on closed file error with CliRunner and echo_via_pager (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3482\"\u003e#3482\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/becbde5cf416441627f779e8dd34e57738ee1c1f\"\u003e\u003ccode\u003ebecbde5\u003c/code\u003e\u003c/a\u003e pager doesn't close std streams\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a5f5aa6d4012d256ccca24638f2642fc371e9f77\"\u003e\u003ccode\u003ea5f5aa6\u003c/code\u003e\u003c/a\u003e Handle empty bytes in echo (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3493\"\u003e#3493\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/4d3db84b251518e97299a38a5ca4bab3d01873a2\"\u003e\u003ccode\u003e4d3db84\u003c/code\u003e\u003c/a\u003e handle empty bytes in echo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d42f15b71757de791a5781fb179fd972da9169f5\"\u003e\u003ccode\u003ed42f15b\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eget_parameter_source()\u003c/code\u003e during type conversion and eager callbacks (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3484\"\u003e#3484\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/0baa8db07736fc7ad3d3eed97d4c73b0059c63e1\"\u003e\u003ccode\u003e0baa8db\u003c/code\u003e\u003c/a\u003e Document ctx.params bypass with test and doc\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.3.2...8.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastmcp` from 3.2.4 to 3.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1: Loop There It Is\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3.1 is a hotfix for the 3.3 packaging split. Clean installs of 3.3.0 could fail on standalone component imports like \u003ccode\u003efrom fastmcp.tools import tool\u003c/code\u003e because component modules reached auth and task primitives through \u003ccode\u003efastmcp.server\u003c/code\u003e, pulling in the server/provider stack and exposing a circular import.\u003c/p\u003e\n\u003cp\u003eComponent-level auth and task primitives now live in lightweight utility modules, with the old server import paths preserved as compatibility re-exports. Component imports stay lightweight, existing server-facing imports continue to work, and the release also includes small docs corrections from the 3.3 rollout.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(docs): use valid FA icon on client-only package page by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4139\"\u003ePrefectHQ/fastmcp#4139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecouple component imports from server by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4150\"\u003ePrefectHQ/fastmcp#4150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.3.0: Slim Reaper\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3 ships \u003ccode\u003efastmcp-slim\u003c/code\u003e, a new lightweight distribution that separates the client from the server stack. It also closes out a meaningful backlog of security hardening, observability improvements, and auth additions that accumulated through the 3.2 cycle.\u003c/p\u003e\n\u003ch2\u003efastmcp-slim\u003c/h2\u003e\n\u003cp\u003eThe full FastMCP package pulls in Starlette, Uvicorn, and the rest of the server machinery — necessary for running a server, but wasteful if you're writing a client, a script, or an agent that just needs to talk to MCP. \u003ccode\u003efastmcp-slim\u003c/code\u003e is a dependency-light distribution that ships the client and transport layer without any of that.\u003c/p\u003e\n\u003cp\u003eThe import namespace is unchanged:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom fastmcp import Client\n\u003cp\u003easync with Client(\u0026quot;\u003ca href=\"https://example.com/mcp\"\u003ehttps://example.com/mcp\u003c/a\u003e\u0026quot;) as client:\nresult = await client.call_tool(\u0026quot;my_tool\u0026quot;, {\u0026quot;arg\u0026quot;: \u0026quot;value\u0026quot;})\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eInstall \u003ccode\u003efastmcp-slim[client]\u003c/code\u003e anywhere you want FastMCP's client without the server footprint — CI environments, lightweight agents, library dependencies that shouldn't force Uvicorn on downstream users.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003eThe OAuth proxy received three hardening upgrades. Silent consent is now guarded against AS-in-the-middle attacks — a malicious authorization server can no longer silently approve a consent it wasn't meant to handle. Redirect URI allowlist matching now rejects dot-segment paths (\u003ccode\u003e/../\u003c/code\u003e, \u003ccode\u003e/./\u003c/code\u003e) that could otherwise bypass prefix checks. And \u003ccode\u003eResponseCachingMiddleware\u003c/code\u003e partitions its cache by access token, closing a gap where different users could see each other's cached responses.\u003c/p\u003e\n\u003ch2\u003eAuth\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eAzureB2CProvider\u003c/code\u003e adds first-class support for Azure AD B2C user flows. The OCI provider is fixed for 3.x installs. And \u003ccode\u003eOAuthProxy\u003c/code\u003e gains a public \u003ccode\u003eupdate_scopes()\u003c/code\u003e API for updating the proxy's required scopes after initialization — useful for servers that determine scope requirements at runtime.\u003c/p\u003e\n\u003ch2\u003eObservability\u003c/h2\u003e\n\u003cp\u003eOTEL instrumentation is now fully compliant with MCP semantic conventions. List operations (\u003ccode\u003elist_tools\u003c/code\u003e, \u003ccode\u003elist_resources\u003c/code\u003e, \u003ccode\u003elist_prompts\u003c/code\u003e, \u003ccode\u003elist_resource_templates\u003c/code\u003e) are instrumented, and delegate spans on proxy servers are enriched with backend attributes.\u003c/p\u003e\n\u003ch2\u003eThread Affinity\u003c/h2\u003e\n\u003cp\u003eSync tools run in a thread pool by default. If your tool holds thread-local state or is bound to a specific thread (UI frameworks, some database drivers), you can now opt out:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/blob/main/docs/changelog.mdx\"\u003efastmcp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003chr /\u003e\n\u003ch2\u003etitle: \u0026quot;Changelog\u0026quot;\nicon: \u0026quot;list-check\u0026quot;\nrss: true\ntag: NEW\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.4.0\"\u003ev3.4.0: Remote Control\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFastMCP 3.4 is about reaching servers that live somewhere else. The headline is \u003ccode\u003efastmcp-remote\u003c/code\u003e, a standalone bridge that connects stdio-only MCP hosts to servers hosted over HTTP. Around it, the proxy layer those connections depend on is hardened: a proxy now forwards \u003ccode\u003einitialize\u003c/code\u003e upstream and fails loudly when the backend is missing or misconfigured, instead of reporting a connected-but-empty proxy. And FastMCP-issued access tokens can now outlive short-lived upstream tokens, so authenticated sessions survive the long idle periods remote clients are prone to.\u003c/p\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd fastmcp-remote bridge package by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4208\"\u003e#4208\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes ⚠️\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eForward proxy initialize as bridge behavior by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4228\"\u003e#4228\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eci: require external PRs to link a tracked issue by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4173\"\u003e#4173\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: new options --host and --no-log-panel | --log-panel  to cli dev apps by \u003ca href=\"https://github.com/itaru2622\"\u003e\u003ccode\u003e@​itaru2622\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4123\"\u003e#4123\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd valid_scopes and extra_authorize_params to WorkOSProvider by \u003ca href=\"https://github.com/tiagoskaneta\"\u003e\u003ccode\u003e@​tiagoskaneta\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4135\"\u003e#4135\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd token_expiry_threshold_seconds for proactive token refresh by \u003ca href=\"https://github.com/mohankumarelec\"\u003e\u003ccode\u003e@​mohankumarelec\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4142\"\u003e#4142\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd review-issue skill for triaging gated external contributions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4212\"\u003e#4212\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd contract gate to review-issue skill by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4214\"\u003e#4214\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLet ToolResult return an error result via is_error by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4217\"\u003e#4217\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate published docs after PyPI release by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4211\"\u003e#4211\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow pre-bound HTTP sockets by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4222\"\u003e#4222\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd targeted coverage tests by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4230\"\u003e#4230\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade ty to 0.0.39 by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4225\"\u003e#4225\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecouple FastMCP access token lifetime from upstream expires_in by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4254\"\u003e#4254\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity 🔒\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat(code-mode): default sandbox limits and per-execution tool-call cap by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4170\"\u003e#4170\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSecurity: Fix 3 findings in GitHub Actions workflows by \u003ca href=\"https://github.com/jpr5\"\u003e\u003ccode\u003e@​jpr5\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4183\"\u003e#4183\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd outbound comment guardrails by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4196\"\u003e#4196\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd uv dependency cooldown by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4213\"\u003e#4213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: VersionSpec eq matching normalizes versions and selects deterministically by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4058\"\u003e#4058\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(tests): hoist azure-identity import out of the OBO test timeout window by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4176\"\u003e#4176\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(auth): disambiguate auth-denied vs missing component messages by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4165\"\u003e#4165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: preserve annotations, meta, title, icons when creating resources from templates by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4061\"\u003e#4061\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: add OTEL spans to sampling step and tool execution by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4059\"\u003e#4059\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(config): read MCP config files as UTF-8 by \u003ca href=\"https://github.com/pragnyanramtha\"\u003e\u003ccode\u003e@​pragnyanramtha\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4164\"\u003e#4164\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(schema): preserve root metadata on fallback by \u003ca href=\"https://github.com/yuyua9\"\u003e\u003ccode\u003e@​yuyua9\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4178\"\u003e#4178\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(proxy): restore _current_server in _restore_request_context by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4168\"\u003e#4168\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(auth): add /.well-known/openid-configuration alias for OAuth server metadata by \u003ca href=\"https://github.com/shigechika\"\u003e\u003ccode\u003e@​shigechika\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4167\"\u003e#4167\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(code-mode): cancel Monty sandbox future on task cancellation by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4169\"\u003e#4169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(auth): unprefix Azure scopes echoed back to MCP clients by \u003ca href=\"https://github.com/rgillinlz\"\u003e\u003ccode\u003e@​rgillinlz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4130\"\u003e#4130\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): forward stateless flag in uv run path by \u003ca href=\"https://github.com/yuyua9\"\u003e\u003ccode\u003e@​yuyua9\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4177\"\u003e#4177\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(ci): scope minimize-reviews concurrency by event name by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4174\"\u003e#4174\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix docs app demo iframe assets by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4194\"\u003e#4194\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/d8dcc273cac9f6f17889a1b60adbdc654f948a50\"\u003e\u003ccode\u003ed8dcc27\u003c/code\u003e\u003c/a\u003e Decouple component imports from server (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4150\"\u003e#4150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/255e3e491082d8fbaeb3ccf25be6983cbab8b657\"\u003e\u003ccode\u003e255e3e4\u003c/code\u003e\u003c/a\u003e fix(docs): use valid FA icon on client-only package page (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4139\"\u003e#4139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/73df4dcaeeba6f985607f633786d38db6caf23f7\"\u003e\u003ccode\u003e73df4dc\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4096\"\u003e#4096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/ee48a0fd6e077e1c32e996f7b51fd442e31c514f\"\u003e\u003ccode\u003eee48a0f\u003c/code\u003e\u003c/a\u003e Refine fastmcp-slim packaging (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4125\"\u003e#4125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/bb4894d2159cd10f0c07f038db9c56b14fb99586\"\u003e\u003ccode\u003ebb4894d\u003c/code\u003e\u003c/a\u003e Add fastmcp-slim for client-only installs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4122\"\u003e#4122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/8209093871af25bc3ceb50bfbcec317632218afd\"\u003e\u003ccode\u003e8209093\u003c/code\u003e\u003c/a\u003e fix(http): terminate active streamable-HTTP transports before lifespan shutdo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/cf59a4511ff1980fd932215ef886e665c829bdbf\"\u003e\u003ccode\u003ecf59a45\u003c/code\u003e\u003c/a\u003e Fix OCI Provider issue in 3.x version. Add OCI auth provider example … (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4116\"\u003e#4116\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/89b99ecfb987781735295869d2e3d620dde7af4c\"\u003e\u003ccode\u003e89b99ec\u003c/code\u003e\u003c/a\u003e fix(proxy): fall back to live identifier for backend_* span attributes (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4109\"\u003e#4109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/310314cf149a18d0a76e5703ee98f80ffb035171\"\u003e\u003ccode\u003e310314c\u003c/code\u003e\u003c/a\u003e fix: cli option --no-banner is NOT passed to cli but server-spec in-correctly...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/28722f846a0319913a4a7b67dd65131d615214b6\"\u003e\u003ccode\u003e28722f8\u003c/code\u003e\u003c/a\u003e fix: drop exc_info for expected tool failures, remove unreachable ValidationE...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.2.4...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-asyncio` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/releases\"\u003epytest-asyncio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epytest-asyncio v1.4.0\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/tree/1.4.0\"\u003e1.4.0\u003c/a\u003e - 2026-05-26\u003c/h1\u003e\n\u003ch2\u003eDeprecated\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOverriding the \u003cem\u003eevent_loop_policy\u003c/em\u003e fixture is deprecated. Use the \u003ccode\u003epytest_asyncio_loop_factories\u003c/code\u003e hook instead. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1419\"\u003e#1419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003epytest_asyncio_loop_factories\u003c/code\u003e hook to parametrize asyncio tests with custom event loop factories.\u003c/p\u003e\n\u003cp\u003eThe hook returns a mapping of factory names to loop factories, and \u003ccode\u003epytest.mark.asyncio(loop_factories=[...])\u003c/code\u003e selects a subset of configured factories per test. When a single factory is configured, test names are unchanged.\u003c/p\u003e\n\u003cp\u003eSynchronous \u003ccode\u003e@pytest_asyncio.fixture\u003c/code\u003e functions now see the correct event loop when custom loop factories are configured, even when test code disrupts the current event loop (e.g., via \u003ccode\u003easyncio.run()\u003c/code\u003e or \u003ccode\u003easyncio.set_event_loop(None)\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1164\"\u003e#1164\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImproved the readability of the warning message that is displayed when \u003ccode\u003easyncio_default_fixture_loop_scope\u003c/code\u003e is unset (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOnly import \u003ccode\u003easyncio.AbstractEventLoopPolicy\u003c/code\u003e for type checking to avoid raising\na DeprecationWarning. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1394\"\u003e#1394\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated minimum supported pytest version to v8.4.0. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1397\"\u003e#1397\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a \u003ccode\u003eResourceWarning: unclosed event loop\u003c/code\u003e warning that could occur when a synchronous test called \u003ccode\u003easyncio.run()\u003c/code\u003e or otherwise unset the current event loop after pytest-asyncio had run an async test or fixture. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/724\"\u003e#724\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNotes for Downstream Packagers\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded dependency on \u003ccode\u003esphinx-tabs \u0026gt;= 3.5\u003c/code\u003e to organize documentation examples into tabs. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1395\"\u003e#1395\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epytest-asyncio v1.4.0a2\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/tree/1.4.0a2\"\u003e1.4.0a2\u003c/a\u003e - 2026-05-02\u003c/h1\u003e\n\u003ch2\u003eDeprecated\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOverriding the \u003cem\u003eevent_loop_policy\u003c/em\u003e fixture is deprecated. Use the \u003ccode\u003epytest_asyncio_loop_factories\u003c/code\u003e hook instead. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1419\"\u003e#1419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003epytest_asyncio_loop_factories\u003c/code\u003e hook to parametrize asyncio tests with custom event loop factories.\u003c/p\u003e\n\u003cp\u003eThe hook returns a mapping of factory names to loop factories, and \u003ccode\u003epytest.mark.asyncio(loop_factories=[...])\u003c/code\u003e selects a subset of configured factories per test. When a single factory is configured, test names are unchanged on pytest 8.4+.\u003c/p\u003e\n\u003cp\u003eSynchronous \u003ccode\u003e@pytest_asyncio.fixture\u003c/code\u003e functions now see the correct event loop when custom loop factories are configured, even when test code disrupts the current event loop (e.g., via \u003ccode\u003easyncio.run()\u003c/code\u003e or \u003ccode\u003easyncio.set_event_loop(None)\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1164\"\u003e#1164\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImproved the readability of the warning message that is displayed when \u003ccode\u003easyncio_default_fixture_loop_scope\u003c/code\u003e is unset (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOnly import \u003ccode\u003easyncio.AbstractEventLoopPolicy\u003c/code\u003e for type checking to avoid raising\na DeprecationWarning. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1394\"\u003e#1394\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/6e14cd2af9292dca1fa2b027a06bbc40b0e0e425\"\u003e\u003ccode\u003e6e14cd2\u003c/code\u003e\u003c/a\u003e chore: Prepare release of v1.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/4b900fb5d0c30949c574e55dd904ee179f858a5e\"\u003e\u003ccode\u003e4b900fb\u003c/code\u003e\u003c/a\u003e Build(deps): Bump codecov/codecov-action from 6.0.0 to 6.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/ab9f63245094865c42c940a34af724b0dec1debf\"\u003e\u003ccode\u003eab9f632\u003c/code\u003e\u003c/a\u003e Build(deps): Bump zipp from 3.23.1 to 4.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/a56fc77ecd59f781d8471b0f6a82bf58e08c95fa\"\u003e\u003ccode\u003ea56fc77\u003c/code\u003e\u003c/a\u003e Build(deps): Bump hypothesis from 6.152.6 to 6.152.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/e8bae9bc1f197731fc1a210c0da557af7b698e6d\"\u003e\u003ccode\u003ee8bae9b\u003c/code\u003e\u003c/a\u003e Build(deps): Bump requests from 2.34.0 to 2.34.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/fc433402c570fd36a7a227ef4bc3abd4579299de\"\u003e\u003ccode\u003efc43340\u003c/code\u003e\u003c/a\u003e Build(deps): Bump idna from 3.14 to 3.15\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/762eaf5033b798b965c92afdbb2cebefa8fc3a8b\"\u003e\u003ccode\u003e762eaf5\u003c/code\u003e\u003c/a\u003e Build(deps): Bump jaraco-functools from 4.4.0 to 4.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/b62e2228c80070977baf6b77ba89d5c148af920f\"\u003e\u003ccode\u003eb62e222\u003c/code\u003e\u003c/a\u003e Build(deps): Bump click from 8.3.3 to 8.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/919044700627889d25ca63b6e7a3bc785f3137eb\"\u003e\u003ccode\u003e9190447\u003c/code\u003e\u003c/a\u003e Build(deps): Bump pydantic from 2.13.3 to 2.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/82a393c5e31b6ebbbd8ec2a8dafc5f35b9cf1236\"\u003e\u003ccode\u003e82a393c\u003c/code\u003e\u003c/a\u003e ci: Remove unnecessary debug output.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/compare/v1.3.0...v1.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage[toml]` to 7.14.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/releases\"\u003ecoverage[toml]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.14.1\u003c/h2\u003e\n\u003ch2\u003eVersion 7.14.1 — 2026-05-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: the HTML report used typographic niceties to make file paths more readable by adding a small amount of space around slashes. Those spaces interfered with searching the page for file paths of interest. Now the report uses CSS to accomplish the same visual tweak so that searches with slashes work correctly. Closes \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2170\"\u003eissue 2170\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://mastodon.social/@hugovk/116588523571204490\"\u003eAdd a 3.16 PyPI classifier\u003c/a\u003e since we test on the 3.16 main branch.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.14.1\"\u003ecoverage 7.14.1\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.14.1\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage[toml]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.14.1 — 2026-05-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the HTML report used typographic niceties to make file paths more\nreadable by adding a small amount of space around slashes. Those spaces\ninterfered with searching the page for file paths of interest. Now the report\nuses CSS to accomplish the same visual tweak so that searches with slashes\nwork correctly. Closes \u003ccode\u003eissue 2170\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eAdd a 3.16 PyPI classifier \u0026lt;hugo-316_\u0026gt;\u003c/code\u003e_ since we test on the 3.16 main\nbranch.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2170: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2170\"\u003ecoveragepy/coveragepy#2170\u003c/a\u003e\n.. _hugo-316: \u003ca href=\"https://mastodon.social/@hugovk/116588523571204490\"\u003ehttps://mastodon.social/@​hugovk/116588523571204490\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-14-0:\u003c/p\u003e\n\u003ch2\u003eVersion 7.14.0 — 2026-05-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFeature: now when running one of the reporting commands, if there are\nparallel data files that need combining, they will be implicitly combined\nbefore creating the report. There is no option to avoid the combination; let\nus know if you have a use case that requires it.  Thanks, \u003ccode\u003eTim Hatch \u0026lt;pull 2162_\u0026gt;\u003c/code\u003e\u003cem\u003e. Closes \u003ccode\u003eissue 1781\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the output from \u003ccode\u003ecombine\u003c/code\u003e was too verbose, listing each file\nconsidered. Now it shows a single line with the counts of files combined,\nfiles skipped, and files with errors. The \u003ccode\u003e-q\u003c/code\u003e flag suppresses this line.\nThe old detailed lines are available with the new \u003ccode\u003e--debug=combine\u003c/code\u003e option.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: running a Python file through a symlink now sets the sys.path correctly,\nmatching regular Python behavior. Fixes \u003ccode\u003eissue 2157\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eCollector.flush_data\u003c/code\u003e could fail with \u0026quot;RuntimeError: Set changed\nsize during iteration\u0026quot; when a tracer in another thread added a line to the\nper-file set that \u003ccode\u003eadd_lines\u003c/code\u003e (or \u003ccode\u003eadd_arcs\u003c/code\u003e) was iterating. The values\npassed to \u003ccode\u003eCoverageData\u003c/code\u003e are now snapshotted via \u003ccode\u003edict.copy()\u003c/code\u003e and\n\u003ccode\u003eset.copy()\u003c/code\u003e, which are atomic under the GIL. Thanks, \u003ccode\u003eAlex Vandiver \u0026lt;pull 2165_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the soft keyword \u003ccode\u003elazy\u003c/code\u003e is now bolded in HTML reports.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWe are no longer testing eventlet support. Eventlet started issuing stern\ndeprecation warnings that break our tests. Our support code is still there.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1781: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1781\"\u003ecoveragepy/coveragepy#1781\u003c/a\u003e\n.. _issue 2157: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2157\"\u003ecoveragepy/coveragepy#2157\u003c/a\u003e\n.. _pull 2162: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2162\"\u003ecoveragepy/coveragepy#2162\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/64d9b66fd852c1920ffe6cb8b58d7e4fdae90226\"\u003e\u003ccode\u003e64d9b66\u003c/code\u003e\u003c/a\u003e docs: correct the date for 7.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/6fa7dd44c25e1a660252faaf030dd8f2f1e20861\"\u003e\u003ccode\u003e6fa7dd4\u003c/code\u003e\u003c/a\u003e chore: bump actions/dependency-review-action (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2181\"\u003e#2181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/078afae263597b004eb9a85d880b6a65008e75ed\"\u003e\u003ccode\u003e078afae\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/cb4f028a36e008b664739d04f387b90ee5105044\"\u003e\u003ccode\u003ecb4f028\u003c/code\u003e\u003c/a\u003e docs: prep for 7.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/ae2d09f562271c6169534e1c242d015dd0823dda\"\u003e\u003ccode\u003eae2d09f\u003c/code\u003e\u003c/a\u003e Merge branch 'nedbat/classifire-316-kits'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2c3568b2e041f2c0dbbc8eaa3919d46ee891b743\"\u003e\u003ccode\u003e2c3568b\u003c/code\u003e\u003c/a\u003e build: declare 3.16 compatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/faa68f8601cf098701b68976dbb73b9fc23c9297\"\u003e\u003ccode\u003efaa68f8\u003c/code\u003e\u003c/a\u003e chore: bump github/codeql-action in the action-dependencies group (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2173\"\u003e#2173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/eb55feedf54b363e3d0b678f20abf3bfd3551a88\"\u003e\u003ccode\u003eeb55fee\u003c/code\u003e\u003c/a\u003e test: we don't need PyPy \u0026lt; 7.3.22 anymore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/ac168fe53c04cdb2ff5231c0c4e5045021ee339b\"\u003e\u003ccode\u003eac168fe\u003c/code\u003e\u003c/a\u003e test: the text summary should show missing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/fed4bd2db3c1cb2916a07791041da693fbf8e996\"\u003e\u003ccode\u003efed4bd2\u003c/code\u003e\u003c/a\u003e chore: upgrade virtualenv\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.5...7.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.11 to 0.15.14\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.14\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-21.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003eairflow-task-implicit-multiple-outputs\u003c/code\u003e (\u003ccode\u003eAIR202\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25152\"\u003e#25152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-use-pathlib\u003c/code\u003e] Mark \u003ccode\u003ePTH101\u003c/code\u003e fix as unsafe when first argument is a class attribute annotated as \u003ccode\u003eint\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25086\"\u003e#25086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Implement \u003ccode\u003etoo-many-try-statements\u003c/code\u003e (\u003ccode\u003eW0717\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23970\"\u003e#23970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add \u003ccode\u003eincorrect-decorator-order\u003c/code\u003e (\u003ccode\u003eRUF074\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23461\"\u003e#23461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add \u003ccode\u003efallible-context-manager\u003c/code\u003e (\u003ccode\u003eRUF075\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22844\"\u003e#22844\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix lambda formatting in interpolated string expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25144\"\u003e#25144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat generic \u003ccode\u003efrozenset\u003c/code\u003e annotations as immutable (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25251\"\u003e#25251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Avoid \u003ccode\u003estrict\u003c/code\u003e behavior when \u003ccode\u003efuture-annotations\u003c/code\u003e are enabled (\u003ccode\u003eTC001\u003c/code\u003e, \u003ccode\u003eTC002\u003c/code\u003e, \u003ccode\u003eTC003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25035\"\u003e#25035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Avoid false positives in \u003ccode\u003eelse\u003c/code\u003e clause (\u003ccode\u003ePLR1733\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25177\"\u003e#25177\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Skip \u003ccode\u003eC417\u003c/code\u003e for lambdas with positional-only parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25272\"\u003e#25272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Preserve f-string source verbatim in \u003ccode\u003eSIM101\u003c/code\u003e fix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25061\"\u003e#25061\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid unnecessary parser lookahead for operators (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25290\"\u003e#25290\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate code example setting Neovim LSP log level (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25284\"\u003e#25284\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd full PEP 798 support (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25104\"\u003e#25104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a parser recursion limit (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24810\"\u003e#24810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate various \u003ccode\u003eruff_python_stdlib\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25273\"\u003e#25273\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ocaballeror\"\u003e\u003ccode\u003e@​ocaballeror\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lerebear\"\u003e\u003ccode\u003e@​lerebear\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin\"\u003e\u003ccode\u003e@​samuelcolvin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/baltasarblanco\"\u003e\u003ccode\u003e@​baltasarblanco\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aconal-com\"\u003e\u003ccode\u003e@​aconal-com\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JelleZijlstra\"\u003e\u003ccode\u003e@​JelleZijlstra\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.14\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-21.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003eairflow-task-implicit-multiple-outputs\u003c/code\u003e (\u003ccode\u003eAIR202\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25152\"\u003e#25152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-use-pathlib\u003c/code\u003e] Mark \u003ccode\u003ePTH101\u003c/code\u003e fix as unsafe when first argument is a class attribute annotated as \u003ccode\u003eint\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25086\"\u003e#25086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Implement \u003ccode\u003etoo-many-try-statements\u003c/code\u003e (\u003ccode\u003eW0717\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23970\"\u003e#23970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add \u003ccode\u003eincorrect-decorator-order\u003c/code\u003e (\u003ccode\u003eRUF074\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23461\"\u003e#23461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add \u003ccode\u003efallible-context-manager\u003c/code\u003e (\u003ccode\u003eRUF075\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22844\"\u003e#22844\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix lambda formatting in interpolated string expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25144\"\u003e#25144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat generic \u003ccode\u003efrozenset\u003c/code\u003e annotations as immutable (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25251\"\u003e#25251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Avoid \u003ccode\u003estrict\u003c/code\u003e behavior when \u003ccode\u003efuture-annotations\u003c/code\u003e are enabled (\u003ccode\u003eTC001\u003c/code\u003e, \u003ccode\u003eTC002\u003c/code\u003e, \u003ccode\u003eTC003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25035\"\u003e#25035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Avoid false positives in \u003ccode\u003eelse\u003c/code\u003e clause (\u003ccode\u003ePLR1733\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25177\"\u003e#25177\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Skip \u003ccode\u003eC417\u003c/code\u003e for lambdas with positional-only parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25272\"\u003e#25272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Preserve f-string source verbatim in \u003ccode\u003eSIM101\u003c/code\u003e fix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25061\"\u003e#25061\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid unnecessary parser lookahead for operators (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25290\"\u003e#25290\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate code example setting Neovim LSP log level (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25284\"\u003e#25284\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd full PEP 798 support (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25104\"\u003e#25104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a parser recursion limit (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24810\"\u003e#24810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate various \u003ccode\u003eruff_python_stdlib\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25273\"\u003e#25273\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ocaballeror\"\u003e\u003ccode\u003e@​ocaballeror\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lerebear\"\u003e\u003ccode\u003e@​lerebear\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin\"\u003e\u003ccode\u003e@​samuelcolvin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/baltasarblanco\"\u003e\u003ccode\u003e@​baltasarblanco\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aconal-com\"\u003e\u003ccode\u003e@​aconal-com\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JelleZijlstra\"\u003e\u003ccode\u003e@​JelleZijlstra\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adityasingh2400\"\u003e\u003ccode\u003e@​adityasingh2400\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9ad2da3015e5faf73bdc5f1d09df3e47238e3edf\"\u003e\u003ccode\u003e9ad2da3\u003c/code\u003e\u003c/a\u003e Bump 0.15.14 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25295\"\u003e#25295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/c714e84952510696c05ec21b0158a3548898f594\"\u003e\u003ccode\u003ec714e84\u003c/code\u003e\u003c/a\u003e [ty] Modernize setup of union types in mdtests (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25291\"\u003e#25291\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/8a8e35ebfe318e2467a0f276e5d1a3a9032a55ad\"\u003e\u003ccode\u003e8a8e35e\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Skip \u003ccode\u003eC417\u003c/code\u003e for lambdas with positional-only parame...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/aea5ed4d278017057c2e842c6c3a2e92ad71495f\"\u003e\u003ccode\u003eaea5ed4\u003c/code\u003e\u003c/a\u003e Avoid unnecessary parser lookahead for operators (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25290\"\u003e#25290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e9d72bb420f26c23e6660bfce4dfa0028b931bff\"\u003e\u003ccode\u003ee9d72bb\u003c/code\u003e\u003c/a\u003e [ty] Allow enum member accesses on \u003ccode\u003eself\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25077\"\u003e#25077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/6cbd59b511a92d5f408db57bde33367c0d47b672\"\u003e\u003ccode\u003e6cbd59b\u003c/code\u003e\u003c/a\u003e Set \u003ccode\u003eexclude-newer = \u0026quot;7 days\u0026quot;\u003c/code\u003e in our PEP-723 scripts (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25285\"\u003e#25285\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9999a3967ae28fe3295131e8883b6947f272a076\"\u003e\u003ccode\u003e9999a39\u003c/code\u003e\u003c/a\u003e Update code example on how to update Neovim LSP log level (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25284\"\u003e#25284\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/67d8c544f0d1c526a2fc60d4bb1358fd7956d178\"\u003e\u003ccode\u003e67d8c54\u003c/code\u003e\u003c/a\u003e [ty] Retain recursively-defined state in binary expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25277\"\u003e#25277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/25a3191140dc0467f9d196f35c128fefde269261\"\u003e\u003ccode\u003e25a3191\u003c/code\u003e\u003c/a\u003e [ty] Refine Callable class-decorator fallback for unknown results (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25250\"\u003e#25250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/c423054dc09e5b644c926b6b527b6accfbe693e9\"\u003e\u003ccode\u003ec423054\u003c/code\u003e\u003c/a\u003e Add a recursion limit to the parser (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24810\"\u003e#24810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.11...0.15.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.20.2 to 2.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eMypy Release Notes\u003c/h1\u003e\n\u003ch2\u003eNext Release\u003c/h2\u003e\n\u003ch2\u003eMypy 2.1\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 2.1.0 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\nimprovements and bug fixes. You can install it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install -U mypy\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can read the full documentation for this release on \u003ca href=\"http://mypy.readthedocs.io\"\u003eRead the Docs\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003elibrt.vecs: Fast Growable Array Type for Mypyc\u003c/h3\u003e\n\u003cp\u003eThe new \u003ccode\u003elibrt.vecs\u003c/code\u003e module provides an efficient growable array type \u003ccode\u003evec\u003c/code\u003e that is\noptimized for mypyc use. It provides fast, packed arrays with integer and floating point\nvalue types, which can be \u003cstrong\u003eseveral times faster\u003c/strong\u003e than \u003ccode\u003elist\u003c/code\u003e, and tens of times faster\nthan \u003ccode\u003earray.array\u003c/code\u003e in code compiled using mypyc. It also supports nested \u003ccode\u003evec\u003c/code\u003e objects and\nnon-value-type items, such as \u003ccode\u003evec[vec[str]]\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eRefer to the \u003ca href=\"https://mypyc.readthedocs.io/en/latest/librt_vecs.html\"\u003edocumentation\u003c/a\u003e for\nthe details.\u003c/p\u003e\n\u003cp\u003eContributed by Jukka Lehtosalo.\u003c/p\u003e\n\u003ch3\u003elibrt.random: Fast Pseudo-Random Number Generation\u003c/h3\u003e\n\u003cp\u003eThe new \u003ccode\u003elibrt.random\u003c/code\u003e module provides fast pseudo-random number generation that is\noptimized for code compiled using mypyc. It can be 3x to 10x faster than the stdlib\n\u003ccode\u003erandom\u003c/code\u003e module in compiled code.\u003c/p\u003e\n\u003cp\u003eRefer to the \u003ca href=\"https://mypyc.readthedocs.io/en/latest/librt_random.html\"\u003edocumentation\u003c/a\u003e for\nthe details.\u003c/p\u003e\n\u003cp\u003eContributed by Jukka Lehtosalo (PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21433\"\u003e21433\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003eMypyc Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnable incremental self-compilation (Vaggelis Danias, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21369\"\u003e21369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake compilation order with multiple files consistent (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21419\"\u003e21419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on accessing \u003ccode\u003eStopAsyncIteration\u003c/code\u003e (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21406\"\u003e21406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix incremental compilation with \u003ccode\u003eseparate\u003c/code\u003e flag (Vaggelis Danias, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21299\"\u003e21299\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes to Crashes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash on partial type with \u003ccode\u003e--allow-redefinition\u003c/code\u003e and \u003ccode\u003eglobal\u003c/code\u003e declaration (Jukka Lehtosalo, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21428\"\u003e21428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix broken awaitable generator patching (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21435\"\u003e21435\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c1c336d7e34eb313080c79b156518c58d27c7234\"\u003e\u003ccode\u003ec1c336d\u003c/code\u003e\u003c/a\u003e Remove +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/74d...\n\n_Description has been truncated_","html_url":"https://github.com/securityscout/securityscout/pull/74","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/securityscout%2Fsecurityscout/issues/74","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/74/packages"}},{"old_version":"2.13.0.2","new_version":"3.3.1","update_type":"major","path":null,"pr_created_at":"2026-06-01T02:39:06.000Z","version_change":"2.13.0.2 → 3.3.1","issue":{"uuid":"4559923178","node_id":"PR_kwDOStcgxc7hM0BA","number":1,"state":"closed","title":"chore(deps): bump fastmcp from 2.13.0.2 to 3.3.1","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-04T02:33:44.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-01T02:39:06.000Z","updated_at":"2026-06-04T02:33:45.000Z","time_to_close":258878,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"fastmcp","old_version":"2.13.0.2","new_version":"3.3.1","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":null,"ecosystem":"pip"},"body":"Bumps [fastmcp](https://github.com/PrefectHQ/fastmcp) from 2.13.0.2 to 3.3.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1: Loop There It Is\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3.1 is a hotfix for the 3.3 packaging split. Clean installs of 3.3.0 could fail on standalone component imports like \u003ccode\u003efrom fastmcp.tools import tool\u003c/code\u003e because component modules reached auth and task primitives through \u003ccode\u003efastmcp.server\u003c/code\u003e, pulling in the server/provider stack and exposing a circular import.\u003c/p\u003e\n\u003cp\u003eComponent-level auth and task primitives now live in lightweight utility modules, with the old server import paths preserved as compatibility re-exports. Component imports stay lightweight, existing server-facing imports continue to work, and the release also includes small docs corrections from the 3.3 rollout.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(docs): use valid FA icon on client-only package page by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4139\"\u003ePrefectHQ/fastmcp#4139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecouple component imports from server by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4150\"\u003ePrefectHQ/fastmcp#4150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.3.0: Slim Reaper\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3 ships \u003ccode\u003efastmcp-slim\u003c/code\u003e, a new lightweight distribution that separates the client from the server stack. It also closes out a meaningful backlog of security hardening, observability improvements, and auth additions that accumulated through the 3.2 cycle.\u003c/p\u003e\n\u003ch2\u003efastmcp-slim\u003c/h2\u003e\n\u003cp\u003eThe full FastMCP package pulls in Starlette, Uvicorn, and the rest of the server machinery — necessary for running a server, but wasteful if you're writing a client, a script, or an agent that just needs to talk to MCP. \u003ccode\u003efastmcp-slim\u003c/code\u003e is a dependency-light distribution that ships the client and transport layer without any of that.\u003c/p\u003e\n\u003cp\u003eThe import namespace is unchanged:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom fastmcp import Client\n\u003cp\u003easync with Client(\u0026quot;\u003ca href=\"https://example.com/mcp\"\u003ehttps://example.com/mcp\u003c/a\u003e\u0026quot;) as client:\nresult = await client.call_tool(\u0026quot;my_tool\u0026quot;, {\u0026quot;arg\u0026quot;: \u0026quot;value\u0026quot;})\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eInstall \u003ccode\u003efastmcp-slim[client]\u003c/code\u003e anywhere you want FastMCP's client without the server footprint — CI environments, lightweight agents, library dependencies that shouldn't force Uvicorn on downstream users.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003eThe OAuth proxy received three hardening upgrades. Silent consent is now guarded against AS-in-the-middle attacks — a malicious authorization server can no longer silently approve a consent it wasn't meant to handle. Redirect URI allowlist matching now rejects dot-segment paths (\u003ccode\u003e/../\u003c/code\u003e, \u003ccode\u003e/./\u003c/code\u003e) that could otherwise bypass prefix checks. And \u003ccode\u003eResponseCachingMiddleware\u003c/code\u003e partitions its cache by access token, closing a gap where different users could see each other's cached responses.\u003c/p\u003e\n\u003ch2\u003eAuth\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eAzureB2CProvider\u003c/code\u003e adds first-class support for Azure AD B2C user flows. The OCI provider is fixed for 3.x installs. And \u003ccode\u003eOAuthProxy\u003c/code\u003e gains a public \u003ccode\u003eupdate_scopes()\u003c/code\u003e API for updating the proxy's required scopes after initialization — useful for servers that determine scope requirements at runtime.\u003c/p\u003e\n\u003ch2\u003eObservability\u003c/h2\u003e\n\u003cp\u003eOTEL instrumentation is now fully compliant with MCP semantic conventions. List operations (\u003ccode\u003elist_tools\u003c/code\u003e, \u003ccode\u003elist_resources\u003c/code\u003e, \u003ccode\u003elist_prompts\u003c/code\u003e, \u003ccode\u003elist_resource_templates\u003c/code\u003e) are instrumented, and delegate spans on proxy servers are enriched with backend attributes.\u003c/p\u003e\n\u003ch2\u003eThread Affinity\u003c/h2\u003e\n\u003cp\u003eSync tools run in a thread pool by default. If your tool holds thread-local state or is bound to a specific thread (UI frameworks, some database drivers), you can now opt out:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/blob/main/docs/changelog.mdx\"\u003efastmcp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003chr /\u003e\n\u003ch2\u003etitle: \u0026quot;Changelog\u0026quot;\nicon: \u0026quot;list-check\u0026quot;\nrss: true\ntag: NEW\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.1\"\u003ev3.1.1: 'Tis But a Patch\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ePins \u003ccode\u003epydantic-monty\u003c/code\u003e below 0.0.8 to fix a breaking change in Monty that affects code mode. Monty 0.0.8 removed the \u003ccode\u003eexternal_functions\u003c/code\u003e constructor parameter, causing \u003ccode\u003eMontySandboxProvider\u003c/code\u003e to fail. This patch caps the version so existing installs work correctly.\u003c/p\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePin pydantic-monty below 0.0.8 to fix code mode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3497\"\u003e#3497\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.1.0...v3.1.1\"\u003ev3.1.0...v3.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.0\"\u003ev3.1.0: Code to Joy\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFastMCP 3.1 is the Code Mode release. The 3.0 architecture introduced providers and transforms as the extensibility layer — 3.1 puts that architecture to work, shipping the most requested capability since launch: servers that can find and execute code on behalf of agents, without requiring clients to know what tools exist.\u003c/p\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Search transforms for tool discovery by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3154\"\u003e#3154\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd experimental CodeMode transform by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3297\"\u003e#3297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Prefab Apps integration for MCP tool UIs by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3316\"\u003e#3316\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLazy-load heavy imports to reduce import time by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3295\"\u003e#3295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd http_client parameter to all token verifiers for connection pooling by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3300\"\u003e#3300\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd in-memory caching for token introspection results by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3298\"\u003e#3298\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SessionStart hook to install gh CLI in cloud sessions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3308\"\u003e#3308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty 0.0.19 type errors by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3310\"\u003e#3310\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCode Mode: Add resource limits to MontySandboxProvider by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3326\"\u003e#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept transforms as FastMCP init kwarg by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3324\"\u003e#3324\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSplit large test files to comply with loq line limit by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd -m/--module flag to \u003ccode\u003efastmcp run\u003c/code\u003e and \u003ccode\u003edev inspector\u003c/code\u003e by \u003ca href=\"https://github.com/dgenio\"\u003e\u003ccode\u003e@​dgenio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3331\"\u003e#3331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd search_result_serializer hook and serialize_tools_for_output_markdown by \u003ca href=\"https://github.com/MagnusS0\"\u003e\u003ccode\u003e@​MagnusS0\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3337\"\u003e#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd MultiAuth for composing multiple token verification sources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3335\"\u003e#3335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdds PropelAuth as an AuthProvider by \u003ca href=\"https://github.com/andrew-propelauth\"\u003e\u003ccode\u003e@​andrew-propelauth\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3358\"\u003e#3358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace vendored DI with uncalled-for by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3301\"\u003e#3301\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecompose CodeMode into composable discovery tools by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3354\"\u003e#3354\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(contrib): auto-sync MCPMixin decorators with from_function signatures by \u003ca href=\"https://github.com/AnkeshThakur\"\u003e\u003ccode\u003e@​AnkeshThakur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3323\"\u003e#3323\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Google GenAI Sampling Handler by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/2977\"\u003e#2977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ListTools, search limit, and catalog size annotation to CodeMode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3359\"\u003e#3359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow configuring FastMCP transport setting in the same way as other configuration by \u003ca href=\"https://github.com/jvdmr\"\u003e\u003ccode\u003e@​jvdmr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1796\"\u003e#1796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd include_unversioned option to VersionFilter by \u003ca href=\"https://github.com/yangbaechu\"\u003e\u003ccode\u003e@​yangbaechu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3349\"\u003e#3349\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/d8dcc273cac9f6f17889a1b60adbdc654f948a50\"\u003e\u003ccode\u003ed8dcc27\u003c/code\u003e\u003c/a\u003e Decouple component imports from server (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4150\"\u003e#4150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/255e3e491082d8fbaeb3ccf25be6983cbab8b657\"\u003e\u003ccode\u003e255e3e4\u003c/code\u003e\u003c/a\u003e fix(docs): use valid FA icon on client-only package page (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4139\"\u003e#4139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/73df4dcaeeba6f985607f633786d38db6caf23f7\"\u003e\u003ccode\u003e73df4dc\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4096\"\u003e#4096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/ee48a0fd6e077e1c32e996f7b51fd442e31c514f\"\u003e\u003ccode\u003eee48a0f\u003c/code\u003e\u003c/a\u003e Refine fastmcp-slim packaging (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4125\"\u003e#4125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/bb4894d2159cd10f0c07f038db9c56b14fb99586\"\u003e\u003ccode\u003ebb4894d\u003c/code\u003e\u003c/a\u003e Add fastmcp-slim for client-only installs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4122\"\u003e#4122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/8209093871af25bc3ceb50bfbcec317632218afd\"\u003e\u003ccode\u003e8209093\u003c/code\u003e\u003c/a\u003e fix(http): terminate active streamable-HTTP transports before lifespan shutdo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/cf59a4511ff1980fd932215ef886e665c829bdbf\"\u003e\u003ccode\u003ecf59a45\u003c/code\u003e\u003c/a\u003e Fix OCI Provider issue in 3.x version. Add OCI auth provider example … (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4116\"\u003e#4116\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/89b99ecfb987781735295869d2e3d620dde7af4c\"\u003e\u003ccode\u003e89b99ec\u003c/code\u003e\u003c/a\u003e fix(proxy): fall back to live identifier for backend_* span attributes (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4109\"\u003e#4109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/310314cf149a18d0a76e5703ee98f80ffb035171\"\u003e\u003ccode\u003e310314c\u003c/code\u003e\u003c/a\u003e fix: cli option --no-banner is NOT passed to cli but server-spec in-correctly...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/28722f846a0319913a4a7b67dd65131d615214b6\"\u003e\u003ccode\u003e28722f8\u003c/code\u003e\u003c/a\u003e fix: drop exc_info for expected tool failures, remove unreachable ValidationE...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v2.13.0.2...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=fastmcp\u0026package-manager=uv\u0026previous-version=2.13.0.2\u0026new-version=3.3.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/goal31121/MCPKubernetesServer/pull/1","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/goal31121%2FMCPKubernetesServer/issues/1","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1/packages"}},{"old_version":"\u003c3.0,\u003e=2.0","new_version":"\u003e=2.0,\u003c4.0","update_type":null,"path":null,"pr_created_at":"2026-05-24T23:42:35.000Z","version_change":"\u003c3.0,\u003e=2.0 → \u003e=2.0,\u003c4.0","issue":{"uuid":"4513329288","node_id":"PR_kwDOSmqlzM7e2_LA","number":6,"state":"open","title":"chore(deps): update fastmcp requirement from \u003c3.0,\u003e=2.0 to \u003e=2.0,\u003c4.0","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-24T23:42:35.000Z","updated_at":"2026-05-24T23:42:36.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): update","packages":[{"name":"fastmcp","old_version":"\u003c3.0,\u003e=2.0","new_version":"\u003e=2.0,\u003c4.0","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [fastmcp](https://github.com/PrefectHQ/fastmcp) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1: Loop There It Is\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3.1 is a hotfix for the 3.3 packaging split. Clean installs of 3.3.0 could fail on standalone component imports like \u003ccode\u003efrom fastmcp.tools import tool\u003c/code\u003e because component modules reached auth and task primitives through \u003ccode\u003efastmcp.server\u003c/code\u003e, pulling in the server/provider stack and exposing a circular import.\u003c/p\u003e\n\u003cp\u003eComponent-level auth and task primitives now live in lightweight utility modules, with the old server import paths preserved as compatibility re-exports. Component imports stay lightweight, existing server-facing imports continue to work, and the release also includes small docs corrections from the 3.3 rollout.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(docs): use valid FA icon on client-only package page by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4139\"\u003ePrefectHQ/fastmcp#4139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecouple component imports from server by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4150\"\u003ePrefectHQ/fastmcp#4150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/blob/main/docs/changelog.mdx\"\u003efastmcp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003chr /\u003e\n\u003ch2\u003etitle: \u0026quot;Changelog\u0026quot;\nicon: \u0026quot;list-check\u0026quot;\nrss: true\ntag: NEW\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.1\"\u003ev3.1.1: 'Tis But a Patch\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ePins \u003ccode\u003epydantic-monty\u003c/code\u003e below 0.0.8 to fix a breaking change in Monty that affects code mode. Monty 0.0.8 removed the \u003ccode\u003eexternal_functions\u003c/code\u003e constructor parameter, causing \u003ccode\u003eMontySandboxProvider\u003c/code\u003e to fail. This patch caps the version so existing installs work correctly.\u003c/p\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePin pydantic-monty below 0.0.8 to fix code mode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3497\"\u003e#3497\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.1.0...v3.1.1\"\u003ev3.1.0...v3.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.0\"\u003ev3.1.0: Code to Joy\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFastMCP 3.1 is the Code Mode release. The 3.0 architecture introduced providers and transforms as the extensibility layer — 3.1 puts that architecture to work, shipping the most requested capability since launch: servers that can find and execute code on behalf of agents, without requiring clients to know what tools exist.\u003c/p\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Search transforms for tool discovery by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3154\"\u003e#3154\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd experimental CodeMode transform by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3297\"\u003e#3297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Prefab Apps integration for MCP tool UIs by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3316\"\u003e#3316\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLazy-load heavy imports to reduce import time by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3295\"\u003e#3295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd http_client parameter to all token verifiers for connection pooling by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3300\"\u003e#3300\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd in-memory caching for token introspection results by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3298\"\u003e#3298\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SessionStart hook to install gh CLI in cloud sessions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3308\"\u003e#3308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty 0.0.19 type errors by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3310\"\u003e#3310\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCode Mode: Add resource limits to MontySandboxProvider by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3326\"\u003e#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept transforms as FastMCP init kwarg by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3324\"\u003e#3324\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSplit large test files to comply with loq line limit by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd -m/--module flag to \u003ccode\u003efastmcp run\u003c/code\u003e and \u003ccode\u003edev inspector\u003c/code\u003e by \u003ca href=\"https://github.com/dgenio\"\u003e\u003ccode\u003e@​dgenio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3331\"\u003e#3331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd search_result_serializer hook and serialize_tools_for_output_markdown by \u003ca href=\"https://github.com/MagnusS0\"\u003e\u003ccode\u003e@​MagnusS0\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3337\"\u003e#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd MultiAuth for composing multiple token verification sources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3335\"\u003e#3335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdds PropelAuth as an AuthProvider by \u003ca href=\"https://github.com/andrew-propelauth\"\u003e\u003ccode\u003e@​andrew-propelauth\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3358\"\u003e#3358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace vendored DI with uncalled-for by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3301\"\u003e#3301\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecompose CodeMode into composable discovery tools by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3354\"\u003e#3354\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(contrib): auto-sync MCPMixin decorators with from_function signatures by \u003ca href=\"https://github.com/AnkeshThakur\"\u003e\u003ccode\u003e@​AnkeshThakur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3323\"\u003e#3323\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Google GenAI Sampling Handler by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/2977\"\u003e#2977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ListTools, search limit, and catalog size annotation to CodeMode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3359\"\u003e#3359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow configuring FastMCP transport setting in the same way as other configuration by \u003ca href=\"https://github.com/jvdmr\"\u003e\u003ccode\u003e@​jvdmr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1796\"\u003e#1796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd include_unversioned option to VersionFilter by \u003ca href=\"https://github.com/yangbaechu\"\u003e\u003ccode\u003e@​yangbaechu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3349\"\u003e#3349\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/d8dcc273cac9f6f17889a1b60adbdc654f948a50\"\u003e\u003ccode\u003ed8dcc27\u003c/code\u003e\u003c/a\u003e Decouple component imports from server (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4150\"\u003e#4150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/255e3e491082d8fbaeb3ccf25be6983cbab8b657\"\u003e\u003ccode\u003e255e3e4\u003c/code\u003e\u003c/a\u003e fix(docs): use valid FA icon on client-only package page (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4139\"\u003e#4139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/73df4dcaeeba6f985607f633786d38db6caf23f7\"\u003e\u003ccode\u003e73df4dc\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4096\"\u003e#4096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/ee48a0fd6e077e1c32e996f7b51fd442e31c514f\"\u003e\u003ccode\u003eee48a0f\u003c/code\u003e\u003c/a\u003e Refine fastmcp-slim packaging (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4125\"\u003e#4125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/bb4894d2159cd10f0c07f038db9c56b14fb99586\"\u003e\u003ccode\u003ebb4894d\u003c/code\u003e\u003c/a\u003e Add fastmcp-slim for client-only installs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4122\"\u003e#4122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/8209093871af25bc3ceb50bfbcec317632218afd\"\u003e\u003ccode\u003e8209093\u003c/code\u003e\u003c/a\u003e fix(http): terminate active streamable-HTTP transports before lifespan shutdo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/cf59a4511ff1980fd932215ef886e665c829bdbf\"\u003e\u003ccode\u003ecf59a45\u003c/code\u003e\u003c/a\u003e Fix OCI Provider issue in 3.x version. Add OCI auth provider example … (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4116\"\u003e#4116\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/89b99ecfb987781735295869d2e3d620dde7af4c\"\u003e\u003ccode\u003e89b99ec\u003c/code\u003e\u003c/a\u003e fix(proxy): fall back to live identifier for backend_* span attributes (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4109\"\u003e#4109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/310314cf149a18d0a76e5703ee98f80ffb035171\"\u003e\u003ccode\u003e310314c\u003c/code\u003e\u003c/a\u003e fix: cli option --no-banner is NOT passed to cli but server-spec in-correctly...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/28722f846a0319913a4a7b67dd65131d615214b6\"\u003e\u003ccode\u003e28722f8\u003c/code\u003e\u003c/a\u003e fix: drop exc_info for expected tool failures, remove unreachable ValidationE...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v2.0.0...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/m2moiz/verify-kit/pull/6","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/m2moiz%2Fverify-kit/issues/6","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/6/packages"}},{"old_version":"3.2.0","new_version":"3.3.1","update_type":"minor","path":null,"pr_created_at":"2026-05-23T02:05:40.000Z","version_change":"3.2.0 → 3.3.1","issue":{"uuid":"4506495666","node_id":"PR_kwDOSlXC9c7eie61","number":4,"state":"open","title":"deps(deps): bump the python-minor-patch group across 1 directory with 5 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-23T02:05:40.000Z","updated_at":"2026-05-23T02:22:51.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps): bump","group_name":"python-minor-patch","update_count":5,"packages":[{"name":"fastmcp","old_version":"3.2.0","new_version":"3.3.1","repository_url":"https://github.com/PrefectHQ/fastmcp"},{"name":"mcp","old_version":"1.26.0","new_version":"1.27.1","repository_url":"https://github.com/modelcontextprotocol/python-sdk"},{"name":"prefab-ui","old_version":"0.18.2","new_version":"0.19.2","repository_url":"https://github.com/PrefectHQ/prefab"},{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"ruff","old_version":"0.15.2","new_version":"0.15.14","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 5 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastmcp](https://github.com/PrefectHQ/fastmcp) | `3.2.0` | `3.3.1` |\n| [mcp](https://github.com/modelcontextprotocol/python-sdk) | `1.26.0` | `1.27.1` |\n| [prefab-ui](https://github.com/PrefectHQ/prefab) | `0.18.2` | `0.19.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.4` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.2` | `0.15.14` |\n\n\nUpdates `fastmcp` from 3.2.0 to 3.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1: Loop There It Is\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3.1 is a hotfix for the 3.3 packaging split. Clean installs of 3.3.0 could fail on standalone component imports like \u003ccode\u003efrom fastmcp.tools import tool\u003c/code\u003e because component modules reached auth and task primitives through \u003ccode\u003efastmcp.server\u003c/code\u003e, pulling in the server/provider stack and exposing a circular import.\u003c/p\u003e\n\u003cp\u003eComponent-level auth and task primitives now live in lightweight utility modules, with the old server import paths preserved as compatibility re-exports. Component imports stay lightweight, existing server-facing imports continue to work, and the release also includes small docs corrections from the 3.3 rollout.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(docs): use valid FA icon on client-only package page by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4139\"\u003ePrefectHQ/fastmcp#4139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecouple component imports from server by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4150\"\u003ePrefectHQ/fastmcp#4150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.3.0: Slim Reaper\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3 ships \u003ccode\u003efastmcp-slim\u003c/code\u003e, a new lightweight distribution that separates the client from the server stack. It also closes out a meaningful backlog of security hardening, observability improvements, and auth additions that accumulated through the 3.2 cycle.\u003c/p\u003e\n\u003ch2\u003efastmcp-slim\u003c/h2\u003e\n\u003cp\u003eThe full FastMCP package pulls in Starlette, Uvicorn, and the rest of the server machinery — necessary for running a server, but wasteful if you're writing a client, a script, or an agent that just needs to talk to MCP. \u003ccode\u003efastmcp-slim\u003c/code\u003e is a dependency-light distribution that ships the client and transport layer without any of that.\u003c/p\u003e\n\u003cp\u003eThe import namespace is unchanged:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom fastmcp import Client\n\u003cp\u003easync with Client(\u0026quot;\u003ca href=\"https://example.com/mcp\"\u003ehttps://example.com/mcp\u003c/a\u003e\u0026quot;) as client:\nresult = await client.call_tool(\u0026quot;my_tool\u0026quot;, {\u0026quot;arg\u0026quot;: \u0026quot;value\u0026quot;})\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eInstall \u003ccode\u003efastmcp-slim[client]\u003c/code\u003e anywhere you want FastMCP's client without the server footprint — CI environments, lightweight agents, library dependencies that shouldn't force Uvicorn on downstream users.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003eThe OAuth proxy received three hardening upgrades. Silent consent is now guarded against AS-in-the-middle attacks — a malicious authorization server can no longer silently approve a consent it wasn't meant to handle. Redirect URI allowlist matching now rejects dot-segment paths (\u003ccode\u003e/../\u003c/code\u003e, \u003ccode\u003e/./\u003c/code\u003e) that could otherwise bypass prefix checks. And \u003ccode\u003eResponseCachingMiddleware\u003c/code\u003e partitions its cache by access token, closing a gap where different users could see each other's cached responses.\u003c/p\u003e\n\u003ch2\u003eAuth\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eAzureB2CProvider\u003c/code\u003e adds first-class support for Azure AD B2C user flows. The OCI provider is fixed for 3.x installs. And \u003ccode\u003eOAuthProxy\u003c/code\u003e gains a public \u003ccode\u003eupdate_scopes()\u003c/code\u003e API for updating the proxy's required scopes after initialization — useful for servers that determine scope requirements at runtime.\u003c/p\u003e\n\u003ch2\u003eObservability\u003c/h2\u003e\n\u003cp\u003eOTEL instrumentation is now fully compliant with MCP semantic conventions. List operations (\u003ccode\u003elist_tools\u003c/code\u003e, \u003ccode\u003elist_resources\u003c/code\u003e, \u003ccode\u003elist_prompts\u003c/code\u003e, \u003ccode\u003elist_resource_templates\u003c/code\u003e) are instrumented, and delegate spans on proxy servers are enriched with backend attributes.\u003c/p\u003e\n\u003ch2\u003eThread Affinity\u003c/h2\u003e\n\u003cp\u003eSync tools run in a thread pool by default. If your tool holds thread-local state or is bound to a specific thread (UI frameworks, some database drivers), you can now opt out:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/d8dcc273cac9f6f17889a1b60adbdc654f948a50\"\u003e\u003ccode\u003ed8dcc27\u003c/code\u003e\u003c/a\u003e Decouple component imports from server (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4150\"\u003e#4150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/255e3e491082d8fbaeb3ccf25be6983cbab8b657\"\u003e\u003ccode\u003e255e3e4\u003c/code\u003e\u003c/a\u003e fix(docs): use valid FA icon on client-only package page (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4139\"\u003e#4139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/73df4dcaeeba6f985607f633786d38db6caf23f7\"\u003e\u003ccode\u003e73df4dc\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4096\"\u003e#4096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/ee48a0fd6e077e1c32e996f7b51fd442e31c514f\"\u003e\u003ccode\u003eee48a0f\u003c/code\u003e\u003c/a\u003e Refine fastmcp-slim packaging (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4125\"\u003e#4125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/bb4894d2159cd10f0c07f038db9c56b14fb99586\"\u003e\u003ccode\u003ebb4894d\u003c/code\u003e\u003c/a\u003e Add fastmcp-slim for client-only installs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4122\"\u003e#4122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/8209093871af25bc3ceb50bfbcec317632218afd\"\u003e\u003ccode\u003e8209093\u003c/code\u003e\u003c/a\u003e fix(http): terminate active streamable-HTTP transports before lifespan shutdo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/cf59a4511ff1980fd932215ef886e665c829bdbf\"\u003e\u003ccode\u003ecf59a45\u003c/code\u003e\u003c/a\u003e Fix OCI Provider issue in 3.x version. Add OCI auth provider example … (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4116\"\u003e#4116\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/89b99ecfb987781735295869d2e3d620dde7af4c\"\u003e\u003ccode\u003e89b99ec\u003c/code\u003e\u003c/a\u003e fix(proxy): fall back to live identifier for backend_* span attributes (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4109\"\u003e#4109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/310314cf149a18d0a76e5703ee98f80ffb035171\"\u003e\u003ccode\u003e310314c\u003c/code\u003e\u003c/a\u003e fix: cli option --no-banner is NOT passed to cli but server-spec in-correctly...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/28722f846a0319913a4a7b67dd65131d615214b6\"\u003e\u003ccode\u003e28722f8\u003c/code\u003e\u003c/a\u003e fix: drop exc_info for expected tool failures, remove unreachable ValidationE...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.2.0...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mcp` from 1.26.0 to 1.27.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/releases\"\u003emcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.27.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[v1.x] fix: catch PydanticUserError when generating output schema (pydantic 2.13 compat) by \u003ca href=\"https://github.com/maxisbey\"\u003e\u003ccode\u003e@​maxisbey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2435\"\u003emodelcontextprotocol/python-sdk#2435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[v1.x] fix(auth): coerce empty-string optional URL fields to None in OAuthClientMetadata by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2405\"\u003emodelcontextprotocol/python-sdk#2405\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[v1.x] build: restrict httpx to \u0026lt;1.0.0 by \u003ca href=\"https://github.com/maxisbey\"\u003e\u003ccode\u003e@​maxisbey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2559\"\u003emodelcontextprotocol/python-sdk#2559\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[v1.x] refactor: import SSEError from httpx_sse public API by \u003ca href=\"https://github.com/maxisbey\"\u003e\u003ccode\u003e@​maxisbey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2561\"\u003emodelcontextprotocol/python-sdk#2561\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/compare/v1.27.0...v1.27.1\"\u003ehttps://github.com/modelcontextprotocol/python-sdk/compare/v1.27.0...v1.27.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.27.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: remove unused \u003ccode\u003erequests\u003c/code\u003e dependency from simple-chatbot example by \u003ca href=\"https://github.com/maxisbey\"\u003e\u003ccode\u003e@​maxisbey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1959\"\u003emodelcontextprotocol/python-sdk#1959\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: backport conformance tests from main to v1.x by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2068\"\u003emodelcontextprotocol/python-sdk#2068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: add RFC 8707 resource validation to OAuth client by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2069\"\u003emodelcontextprotocol/python-sdk#2069\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add idle timeout for StreamableHTTP sessions by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1994\"\u003emodelcontextprotocol/python-sdk#1994\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[v1.x] fix: prevent command injection in example URL opening by \u003ca href=\"https://github.com/maxisbey\"\u003e\u003ccode\u003e@​maxisbey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2085\"\u003emodelcontextprotocol/python-sdk#2085\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd VERSIONING.md, ROADMAP.md, and DEPENDENCY_POLICY.md by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2084\"\u003emodelcontextprotocol/python-sdk#2084\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: restructure README into docs/ pages by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2091\"\u003emodelcontextprotocol/python-sdk#2091\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: comprehensive feature documentation for SEP-1730 Tier 1 by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2090\"\u003emodelcontextprotocol/python-sdk#2090\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix stub pages and improve docs structure by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2101\"\u003emodelcontextprotocol/python-sdk#2101\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix GitHub links to point to v1.x branch by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2102\"\u003emodelcontextprotocol/python-sdk#2102\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add snippet verification for docs/ pages by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2115\"\u003emodelcontextprotocol/python-sdk#2115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add server-side tool error handling documentation by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2129\"\u003emodelcontextprotocol/python-sdk#2129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBackport: Add missing TasksCallCapability to v1.x by \u003ca href=\"https://github.com/BabyChrist666\"\u003e\u003ccode\u003e@​BabyChrist666\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2137\"\u003emodelcontextprotocol/python-sdk#2137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[v1.x] fix: handle non-UTF-8 bytes in stdio server stdin by \u003ca href=\"https://github.com/maxisbey\"\u003e\u003ccode\u003e@​maxisbey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2303\"\u003emodelcontextprotocol/python-sdk#2303\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[v1.x] fix: handle ClosedResourceError when transport closes mid-request by \u003ca href=\"https://github.com/owendevereaux\"\u003e\u003ccode\u003e@​owendevereaux\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2334\"\u003emodelcontextprotocol/python-sdk#2334\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/owendevereaux\"\u003e\u003ccode\u003e@​owendevereaux\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2334\"\u003emodelcontextprotocol/python-sdk#2334\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/compare/v1.26.0...v1.27.0\"\u003ehttps://github.com/modelcontextprotocol/python-sdk/compare/v1.26.0...v1.27.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/77431ebe7dda9ed0c61451b22d3e7f8d981bc092\"\u003e\u003ccode\u003e77431eb\u003c/code\u003e\u003c/a\u003e [v1.x] refactor: import SSEError from httpx_sse public API (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2561\"\u003e#2561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/2034cae340e5991a39018f3ab4496ca35fa29698\"\u003e\u003ccode\u003e2034cae\u003c/code\u003e\u003c/a\u003e [v1.x] build: restrict httpx to \u0026lt;1.0.0 (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2559\"\u003e#2559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/73d458baac207cecf77d17e64c7ce3902f4bce04\"\u003e\u003ccode\u003e73d458b\u003c/code\u003e\u003c/a\u003e [v1.x] fix(auth): coerce empty-string optional URL fields to None in OAuthCli...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/8d4c2f5834f9925b969809d4db415bba130ee4e8\"\u003e\u003ccode\u003e8d4c2f5\u003c/code\u003e\u003c/a\u003e [v1.x] fix: catch PydanticUserError when generating output schema (pydantic 2...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/652478266702ac71a1d03692337bd5207ddbedf4\"\u003e\u003ccode\u003e6524782\u003c/code\u003e\u003c/a\u003e [v1.x] fix: handle ClosedResourceError when transport closes mid-request (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2334\"\u003e#2334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/2e9897e2b916bef25e7755146aeb9f9b69c1075d\"\u003e\u003ccode\u003e2e9897e\u003c/code\u003e\u003c/a\u003e [v1.x] fix: handle non-UTF-8 bytes in stdio server stdin (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2303\"\u003e#2303\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/f8d98b63a7e9ab5855d79556d3d7e5638472af6c\"\u003e\u003ccode\u003ef8d98b6\u003c/code\u003e\u003c/a\u003e Backport: Add missing TasksCallCapability to v1.x (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2137\"\u003e#2137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/c68e254bad1dd39e6a10dad43d954c6d17f9f514\"\u003e\u003ccode\u003ec68e254\u003c/code\u003e\u003c/a\u003e docs: add server-side tool error handling documentation (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2129\"\u003e#2129\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/1ef124e4a85c1c0947fdc6ba1dd1af384d866064\"\u003e\u003ccode\u003e1ef124e\u003c/code\u003e\u003c/a\u003e docs: add snippet verification for docs/ pages (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2115\"\u003e#2115\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/cfbbd7d71aeb094b122c8780a5cb3816e09f29af\"\u003e\u003ccode\u003ecfbbd7d\u003c/code\u003e\u003c/a\u003e docs: fix GitHub links to point to v1.x branch (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2102\"\u003e#2102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/compare/v1.26.0...v1.27.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prefab-ui` from 0.18.2 to 0.19.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/prefab/releases\"\u003eprefab-ui's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.19.2: Results May Vary\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump pytest from 9.0.2 to 9.0.3 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/420\"\u003ePrefectHQ/prefab#420\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump hono from 4.12.12 to 4.12.14 in /renderer by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/422\"\u003ePrefectHQ/prefab#422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump dompurify from 3.3.2 to 3.4.0 in /renderer by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/423\"\u003ePrefectHQ/prefab#423\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty 0.0.32 upgrade failure in PyodideSandbox by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/429\"\u003ePrefectHQ/prefab#429\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump postcss from 8.5.6 to 8.5.10 in /renderer by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/430\"\u003ePrefectHQ/prefab#430\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix result callback interpolation by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/447\"\u003ePrefectHQ/prefab#447\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump hono from 4.12.14 to 4.12.21 in /renderer by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/444\"\u003ePrefectHQ/prefab#444\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump idna from 3.13 to 3.15 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/443\"\u003ePrefectHQ/prefab#443\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump fast-uri from 3.1.0 to 3.1.2 in /renderer by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/439\"\u003ePrefectHQ/prefab#439\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump ip-address and express-rate-limit in /renderer by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/435\"\u003ePrefectHQ/prefab#435\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/prefab/compare/v0.19.1...v0.19.2\"\u003ehttps://github.com/PrefectHQ/prefab/compare/v0.19.1...v0.19.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.19.1: Through No Default of Your Own\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd defaults kwarg to Form.from_model for runtime prefill by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/421\"\u003ePrefectHQ/prefab#421\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/prefab/compare/v0.19.0...v0.19.1\"\u003ehttps://github.com/PrefectHQ/prefab/compare/v0.19.0...v0.19.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.19.0: Keynote Address\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix Pages flash on first navigation, clamp Progress overflow by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/410\"\u003ePrefectHQ/prefab#410\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd keyboard shortcuts, Kbd component, state-controlled Dialog by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/413\"\u003ePrefectHQ/prefab#413\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd presentation slideshow, expand docs examples by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/414\"\u003ePrefectHQ/prefab#414\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003e@​hono/node-server\u003c/code\u003e from 1.19.10 to 1.19.13 in /renderer by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/411\"\u003ePrefectHQ/prefab#411\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump hono from 4.12.7 to 4.12.12 in /renderer by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/412\"\u003ePrefectHQ/prefab#412\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump vite from 6.4.1 to 6.4.2 in /renderer by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/402\"\u003ePrefectHQ/prefab#402\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lodash from 4.17.23 to 4.18.1 in /renderer by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/397\"\u003ePrefectHQ/prefab#397\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix docs preview slider collapse, auto-sync Mintlify cache by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/415\"\u003ePrefectHQ/prefab#415\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lodash-es and langium in /renderer by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/406\"\u003ePrefectHQ/prefab#406\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake playground code panel collapsible and resizable by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/416\"\u003ePrefectHQ/prefab#416\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop fighting app.html merge conflicts by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/417\"\u003ePrefectHQ/prefab#417\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eNote generate-notes API in release workflow docs by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/418\"\u003ePrefectHQ/prefab#418\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/prefab/compare/v0.18.5...v0.19.0\"\u003ehttps://github.com/PrefectHQ/prefab/compare/v0.18.5...v0.19.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.18.5: Table Stakes\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix DataTable search, sort removal, and row deselect by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/pull/408\"\u003ePrefectHQ/prefab#408\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/prefab/compare/v0.18.4...v0.18.5\"\u003ehttps://github.com/PrefectHQ/prefab/compare/v0.18.4...v0.18.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.18.4: Mod Squad\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefab/commit/96774dc984e7afaa4130f3fd134ca103f17170a8\"\u003e\u003ccode\u003e96774dc\u003c/code\u003e\u003c/a\u003e Bump ip-address and express-rate-limit in /renderer (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/issues/435\"\u003e#435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefab/commit/02baaae6f801a27e04da721f20e714c105247d78\"\u003e\u003ccode\u003e02baaae\u003c/code\u003e\u003c/a\u003e Bump fast-uri from 3.1.0 to 3.1.2 in /renderer (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/issues/439\"\u003e#439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefab/commit/e9bfd0b5eb485ae0e3710f573cd5a657a12e6e1f\"\u003e\u003ccode\u003ee9bfd0b\u003c/code\u003e\u003c/a\u003e Bump idna from 3.13 to 3.15 (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/issues/443\"\u003e#443\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefab/commit/41f91974ceae329539da124aa4e2f042810aafeb\"\u003e\u003ccode\u003e41f9197\u003c/code\u003e\u003c/a\u003e Bump hono from 4.12.14 to 4.12.21 in /renderer (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/issues/444\"\u003e#444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefab/commit/1e2a9532d8fed78b232ea355c225c40e9061fbd0\"\u003e\u003ccode\u003e1e2a953\u003c/code\u003e\u003c/a\u003e Fix result callback interpolation (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/issues/447\"\u003e#447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefab/commit/6def5f8853de7accd848f9eb9204db779335ba5b\"\u003e\u003ccode\u003e6def5f8\u003c/code\u003e\u003c/a\u003e Bump postcss from 8.5.6 to 8.5.10 in /renderer (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/issues/430\"\u003e#430\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefab/commit/d645b32413e1ae4d44efe7e20fd304b6c5da828f\"\u003e\u003ccode\u003ed645b32\u003c/code\u003e\u003c/a\u003e Fix ty 0.0.32 upgrade failure in PyodideSandbox (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/issues/429\"\u003e#429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefab/commit/160480be7037fe5d4a06f9d0d7b744d3e288411e\"\u003e\u003ccode\u003e160480b\u003c/code\u003e\u003c/a\u003e Bump dompurify from 3.3.2 to 3.4.0 in /renderer (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/issues/423\"\u003e#423\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefab/commit/291ccc0d5e229033bc22fa22f579fcfbab8319c1\"\u003e\u003ccode\u003e291ccc0\u003c/code\u003e\u003c/a\u003e Bump hono from 4.12.12 to 4.12.14 in /renderer (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/issues/422\"\u003e#422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefab/commit/5214f29d1fc114b35a3a7bc52714c38ad60fdbe8\"\u003e\u003ccode\u003e5214f29\u003c/code\u003e\u003c/a\u003e Bump pytest from 9.0.2 to 9.0.3 (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefab/issues/420\"\u003e#420\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/prefab/compare/v0.18.2...v0.19.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.12.5 to 2.13.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.3 2026-04-20\u003c/h2\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.2 2026-04-17\u003c/h2\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.1 2026-04-15\u003c/h2\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.0 2026-04-13\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.1\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.0 (2026-04-13)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe highlights of the v2.13 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-13-release\"\u003eblog post\u003c/a\u003e.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/cf67d4b3193c3fe43ede18612ed62785eee11382\"\u003e\u003ccode\u003ecf67d4b\u003c/code\u003e\u003c/a\u003e Fix linting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f0d8a214a5803036db46a56b1f62f1e56b81d662\"\u003e\u003ccode\u003ef0d8a21\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/5e3fe1d41a00f441204241c66078003ae0391f9a\"\u003e\u003ccode\u003e5e3fe1d\u003c/code\u003e\u003c/a\u003e Check for pydantic tag pattern in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7f9edcc2a191d2eaa9751220eb910914e716a686\"\u003e\u003ccode\u003e7f9edcc\u003c/code\u003e\u003c/a\u003e Document tagging conventions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b46a0c9b8a4dd967fda8ec1a92f6437076bf262c\"\u003e\u003ccode\u003eb46a0c9\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/50629c851e61d887d5420452c311ec6203f1f400\"\u003e\u003ccode\u003e50629c8\u003c/code\u003e\u003c/a\u003e Update to PyPy 7.3.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8522ebb71e5e9a6f7188af5f009f01785b8cf725\"\u003e\u003ccode\u003e8522ebb\u003c/code\u003e\u003c/a\u003e Preserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a37f3aff090ca342dc5f48304889963530b993f8\"\u003e\u003ccode\u003ea37f3af\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003eMISSING\u003c/code\u003e sentinel test to work with unreleased \u003ccode\u003etyping_extensions\u003c/code\u003e ver...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/909259a9df660518033aa686b689f045a6eaf9d2\"\u003e\u003ccode\u003e909259a\u003c/code\u003e\u003c/a\u003e Remove Logfire example in documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c4174c366606fc2dc46cb806833a080aefa77df\"\u003e\u003ccode\u003e2c4174c\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.155 to 0.2.185\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.5...v2.13.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.2 to 0.15.14\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.14\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-21.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003eairflow-task-implicit-multiple-outputs\u003c/code\u003e (\u003ccode\u003eAIR202\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25152\"\u003e#25152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-use-pathlib\u003c/code\u003e] Mark \u003ccode\u003ePTH101\u003c/code\u003e fix as unsafe when first argument is a class attribute annotated as \u003ccode\u003eint\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25086\"\u003e#25086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Implement \u003ccode\u003etoo-many-try-statements\u003c/code\u003e (\u003ccode\u003eW0717\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23970\"\u003e#23970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add \u003ccode\u003eincorrect-decorator-order\u003c/code\u003e (\u003ccode\u003eRUF074\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23461\"\u003e#23461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add \u003ccode\u003efallible-context-manager\u003c/code\u003e (\u003ccode\u003eRUF075\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22844\"\u003e#22844\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix lambda formatting in interpolated string expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25144\"\u003e#25144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat generic \u003ccode\u003efrozenset\u003c/code\u003e annotations as immutable (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25251\"\u003e#25251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Avoid \u003ccode\u003estrict\u003c/code\u003e behavior when \u003ccode\u003efuture-annotations\u003c/code\u003e are enabled (\u003ccode\u003eTC001\u003c/code\u003e, \u003ccode\u003eTC002\u003c/code\u003e, \u003ccode\u003eTC003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25035\"\u003e#25035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Avoid false positives in \u003ccode\u003eelse\u003c/code\u003e clause (\u003ccode\u003ePLR1733\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25177\"\u003e#25177\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Skip \u003ccode\u003eC417\u003c/code\u003e for lambdas with positional-only parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25272\"\u003e#25272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Preserve f-string source verbatim in \u003ccode\u003eSIM101\u003c/code\u003e fix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25061\"\u003e#25061\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid unnecessary parser lookahead for operators (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25290\"\u003e#25290\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate code example setting Neovim LSP log level (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25284\"\u003e#25284\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd full PEP 798 support (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25104\"\u003e#25104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a parser recursion limit (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24810\"\u003e#24810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate various \u003ccode\u003eruff_python_stdlib\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25273\"\u003e#25273\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ocaballeror\"\u003e\u003ccode\u003e@​ocaballeror\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lerebear\"\u003e\u003ccode\u003e@​lerebear\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin\"\u003e\u003ccode\u003e@​samuelcolvin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/baltasarblanco\"\u003e\u003ccode\u003e@​baltasarblanco\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aconal-com\"\u003e\u003ccode\u003e@​aconal-com\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JelleZijlstra\"\u003e\u003ccode\u003e@​JelleZijlstra\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.14\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-21.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003eairflow-task-implicit-multiple-outputs\u003c/code\u003e (\u003ccode\u003eAIR202\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25152\"\u003e#25152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-use-pathlib\u003c/code\u003e] Mark \u003ccode\u003ePTH101\u003c/code\u003e fix as unsafe when first argument is a class attribute annotated as \u003ccode\u003eint\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25086\"\u003e#25086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Implement \u003ccode\u003etoo-many-try-statements\u003c/code\u003e (\u003ccode\u003eW0717\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23970\"\u003e#23970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add \u003ccode\u003eincorrect-decorator-order\u003c/code\u003e (\u003ccode\u003eRUF074\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23461\"\u003e#23461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add \u003ccode\u003efallible-context-manager\u003c/code\u003e (\u003ccode\u003eRUF075\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22844\"\u003e#22844\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix lambda formatting in interpolated string expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25144\"\u003e#25144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat generic \u003ccode\u003efrozenset\u003c/code\u003e annotations as immutable (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25251\"\u003e#25251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Avoid \u003ccode\u003estrict\u003c/code\u003e behavior when \u003ccode\u003efuture-annotations\u003c/code\u003e are enabled (\u003ccode\u003eTC001\u003c/code\u003e, \u003ccode\u003eTC002\u003c/code\u003e, \u003ccode\u003eTC003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25035\"\u003e#25035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Avoid false positives in \u003ccode\u003eelse\u003c/code\u003e clause (\u003ccode\u003ePLR1733\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25177\"\u003e#25177\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Skip \u003ccode\u003eC417\u003c/code\u003e for lambdas with positional-only parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25272\"\u003e#25272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Preserve f-string source verbatim in \u003ccode\u003eSIM101\u003c/code\u003e fix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25061\"\u003e#25061\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid unnecessary parser lookahead for operators (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25290\"\u003e#25290\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate code example setting Neovim LSP log level (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25284\"\u003e#25284\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd full PEP 798 support (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25104\"\u003e#25104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a parser recursion limit (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24810\"\u003e#24810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate various \u003ccode\u003eruff_python_stdlib\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25273\"\u003e#25273\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ocaballeror\"\u003e\u003ccode\u003e@​ocaballeror\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lerebear\"\u003e\u003ccode\u003e@​lerebear\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin\"\u003e\u003ccode\u003e@​samuelcolvin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/baltasarblanco\"\u003e\u003ccode\u003e@​baltasarblanco\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aconal-com\"\u003e\u003ccode\u003e@​aconal-com\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JelleZijlstra\"\u003e\u003ccode\u003e@​JelleZijlstra\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adityasingh2400\"\u003e\u003ccode\u003e@​adityasingh2400\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9ad2da3015e5faf73bdc5f1d09df3e47238e3edf\"\u003e\u003ccode\u003e9ad2da3\u003c/code\u003e\u003c/a\u003e Bump 0.15.14 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25295\"\u003e#25295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/c714e84952510696c05ec21b0158a3548898f594\"\u003e\u003ccode\u003ec714e84\u003c/code\u003e\u003c/a\u003e [ty] Modernize setup of union types in mdtests (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25291\"\u003e#25291\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/8a8e35ebfe318e2467a0f276e5d1a3a9032a55ad\"\u003e\u003ccode\u003e8a8e35e\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Skip \u003ccode\u003eC417\u003c/code\u003e for lambdas with positional-only parame...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/aea5ed4d278017057c2e842c6c3a2e92ad71495f\"\u003e\u003ccode\u003eaea5ed4\u003c/code\u003e\u003c/a\u003e Avoid unnecessary parser lookahead for operators (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25290\"\u003e#25290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e9d72bb420f26c23e6660bfce4dfa0028b931bff\"\u003e\u003ccode\u003ee9d72bb\u003c/code\u003e\u003c/a\u003e [ty] Allow enum member accesses on \u003ccode\u003eself\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25077\"\u003e#25077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/6cbd59b511a92d5f408db57bde33367c0d47b672\"\u003e\u003ccode\u003e6cbd59b\u003c/code\u003e\u003c/a\u003e Set \u003ccode\u003eexclude-newer = \u0026quot;7 days\u0026quot;\u003c/code\u003e in our PEP-723 scripts (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25285\"\u003e#25285\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9999a3967ae28fe3295131e8883b6947f272a076\"\u003e\u003ccode\u003e9999a39\u003c/code\u003e\u003c/a\u003e Update code example on how to update Neovim LSP log level (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25284\"\u003e#25284\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/67d8c544f0d1c526a2fc60d4bb1358fd7956d178\"\u003e\u003ccode\u003e67d8c54\u003c/code\u003e\u003c/a\u003e [ty] Retain recursively-defined state in binary expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25277\"\u003e#25277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/25a3191140dc0467f9d196f35c128fefde269261\"\u003e\u003ccode\u003e25a3191\u003c/code\u003e\u003c/a\u003e [ty] Refine Callable class-decorator fallback for unknown results (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25250\"\u003e#25250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/c423054dc09e5b644c926b6b527b6accfbe693e9\"\u003e\u003ccode\u003ec423054\u003c/code\u003e\u003c/a\u003e Add a recursion limit to the parser (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24810\"\u003e#24810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.2...0.15.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n","html_url":"https://github.com/aravindev/inkscape_mcp/pull/4","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/aravindev%2Finkscape_mcp/issues/4","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/4/packages"}},{"old_version":"\u003e=2.0.0","new_version":"\u003e=3.3.1","update_type":"minor","path":null,"pr_created_at":"2026-05-20T20:16:29.000Z","version_change":"\u003e=2.0.0 → \u003e=3.3.1","issue":{"uuid":"4489624457","node_id":"PR_kwDOSgwX587dr5zU","number":12,"state":"closed","title":"Update fastmcp requirement from \u003e=2.0.0 to \u003e=3.3.1","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-23T07:31:45.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-20T20:16:29.000Z","updated_at":"2026-05-23T07:31:47.000Z","time_to_close":213316,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"fastmcp","old_version":"\u003e=2.0.0","new_version":"\u003e=3.3.1","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [fastmcp](https://github.com/PrefectHQ/fastmcp) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1: Loop There It Is\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3.1 is a hotfix for the 3.3 packaging split. Clean installs of 3.3.0 could fail on standalone component imports like \u003ccode\u003efrom fastmcp.tools import tool\u003c/code\u003e because component modules reached auth and task primitives through \u003ccode\u003efastmcp.server\u003c/code\u003e, pulling in the server/provider stack and exposing a circular import.\u003c/p\u003e\n\u003cp\u003eComponent-level auth and task primitives now live in lightweight utility modules, with the old server import paths preserved as compatibility re-exports. Component imports stay lightweight, existing server-facing imports continue to work, and the release also includes small docs corrections from the 3.3 rollout.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(docs): use valid FA icon on client-only package page by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4139\"\u003ePrefectHQ/fastmcp#4139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecouple component imports from server by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4150\"\u003ePrefectHQ/fastmcp#4150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/blob/main/docs/changelog.mdx\"\u003efastmcp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003chr /\u003e\n\u003ch2\u003etitle: \u0026quot;Changelog\u0026quot;\nicon: \u0026quot;list-check\u0026quot;\nrss: true\ntag: NEW\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.1\"\u003ev3.1.1: 'Tis But a Patch\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ePins \u003ccode\u003epydantic-monty\u003c/code\u003e below 0.0.8 to fix a breaking change in Monty that affects code mode. Monty 0.0.8 removed the \u003ccode\u003eexternal_functions\u003c/code\u003e constructor parameter, causing \u003ccode\u003eMontySandboxProvider\u003c/code\u003e to fail. This patch caps the version so existing installs work correctly.\u003c/p\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePin pydantic-monty below 0.0.8 to fix code mode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3497\"\u003e#3497\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.1.0...v3.1.1\"\u003ev3.1.0...v3.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.0\"\u003ev3.1.0: Code to Joy\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFastMCP 3.1 is the Code Mode release. The 3.0 architecture introduced providers and transforms as the extensibility layer — 3.1 puts that architecture to work, shipping the most requested capability since launch: servers that can find and execute code on behalf of agents, without requiring clients to know what tools exist.\u003c/p\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Search transforms for tool discovery by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3154\"\u003e#3154\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd experimental CodeMode transform by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3297\"\u003e#3297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Prefab Apps integration for MCP tool UIs by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3316\"\u003e#3316\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLazy-load heavy imports to reduce import time by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3295\"\u003e#3295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd http_client parameter to all token verifiers for connection pooling by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3300\"\u003e#3300\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd in-memory caching for token introspection results by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3298\"\u003e#3298\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SessionStart hook to install gh CLI in cloud sessions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3308\"\u003e#3308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty 0.0.19 type errors by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3310\"\u003e#3310\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCode Mode: Add resource limits to MontySandboxProvider by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3326\"\u003e#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept transforms as FastMCP init kwarg by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3324\"\u003e#3324\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSplit large test files to comply with loq line limit by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd -m/--module flag to \u003ccode\u003efastmcp run\u003c/code\u003e and \u003ccode\u003edev inspector\u003c/code\u003e by \u003ca href=\"https://github.com/dgenio\"\u003e\u003ccode\u003e@​dgenio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3331\"\u003e#3331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd search_result_serializer hook and serialize_tools_for_output_markdown by \u003ca href=\"https://github.com/MagnusS0\"\u003e\u003ccode\u003e@​MagnusS0\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3337\"\u003e#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd MultiAuth for composing multiple token verification sources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3335\"\u003e#3335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdds PropelAuth as an AuthProvider by \u003ca href=\"https://github.com/andrew-propelauth\"\u003e\u003ccode\u003e@​andrew-propelauth\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3358\"\u003e#3358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace vendored DI with uncalled-for by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3301\"\u003e#3301\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecompose CodeMode into composable discovery tools by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3354\"\u003e#3354\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(contrib): auto-sync MCPMixin decorators with from_function signatures by \u003ca href=\"https://github.com/AnkeshThakur\"\u003e\u003ccode\u003e@​AnkeshThakur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3323\"\u003e#3323\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Google GenAI Sampling Handler by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/2977\"\u003e#2977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ListTools, search limit, and catalog size annotation to CodeMode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3359\"\u003e#3359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow configuring FastMCP transport setting in the same way as other configuration by \u003ca href=\"https://github.com/jvdmr\"\u003e\u003ccode\u003e@​jvdmr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1796\"\u003e#1796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd include_unversioned option to VersionFilter by \u003ca href=\"https://github.com/yangbaechu\"\u003e\u003ccode\u003e@​yangbaechu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3349\"\u003e#3349\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/d8dcc273cac9f6f17889a1b60adbdc654f948a50\"\u003e\u003ccode\u003ed8dcc27\u003c/code\u003e\u003c/a\u003e Decouple component imports from server (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4150\"\u003e#4150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/255e3e491082d8fbaeb3ccf25be6983cbab8b657\"\u003e\u003ccode\u003e255e3e4\u003c/code\u003e\u003c/a\u003e fix(docs): use valid FA icon on client-only package page (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4139\"\u003e#4139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/73df4dcaeeba6f985607f633786d38db6caf23f7\"\u003e\u003ccode\u003e73df4dc\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4096\"\u003e#4096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/ee48a0fd6e077e1c32e996f7b51fd442e31c514f\"\u003e\u003ccode\u003eee48a0f\u003c/code\u003e\u003c/a\u003e Refine fastmcp-slim packaging (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4125\"\u003e#4125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/bb4894d2159cd10f0c07f038db9c56b14fb99586\"\u003e\u003ccode\u003ebb4894d\u003c/code\u003e\u003c/a\u003e Add fastmcp-slim for client-only installs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4122\"\u003e#4122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/8209093871af25bc3ceb50bfbcec317632218afd\"\u003e\u003ccode\u003e8209093\u003c/code\u003e\u003c/a\u003e fix(http): terminate active streamable-HTTP transports before lifespan shutdo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/cf59a4511ff1980fd932215ef886e665c829bdbf\"\u003e\u003ccode\u003ecf59a45\u003c/code\u003e\u003c/a\u003e Fix OCI Provider issue in 3.x version. Add OCI auth provider example … (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4116\"\u003e#4116\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/89b99ecfb987781735295869d2e3d620dde7af4c\"\u003e\u003ccode\u003e89b99ec\u003c/code\u003e\u003c/a\u003e fix(proxy): fall back to live identifier for backend_* span attributes (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4109\"\u003e#4109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/310314cf149a18d0a76e5703ee98f80ffb035171\"\u003e\u003ccode\u003e310314c\u003c/code\u003e\u003c/a\u003e fix: cli option --no-banner is NOT passed to cli but server-spec in-correctly...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/28722f846a0319913a4a7b67dd65131d615214b6\"\u003e\u003ccode\u003e28722f8\u003c/code\u003e\u003c/a\u003e fix: drop exc_info for expected tool failures, remove unreachable ValidationE...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v2.0.0...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/scutuatua-crypto/scutua-mcp/pull/12","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/scutuatua-crypto%2Fscutua-mcp/issues/12","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12/packages"}},{"old_version":"3.2.4","new_version":"3.3.1","update_type":"minor","path":null,"pr_created_at":"2026-05-20T11:37:13.000Z","version_change":"3.2.4 → 3.3.1","issue":{"uuid":"4486015144","node_id":"PR_kwDOL_eVX87dgOxs","number":1806,"state":"open","title":"chore(deps): bump the python-deps group with 7 updates","user":"dependabot[bot]","labels":["dependencies","e2e-test","run-examples","python:uv","e2e-full-mysql"],"assignees":[],"locked":false,"comments_count":9,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-20T11:37:13.000Z","updated_at":"2026-05-20T11:57:28.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-deps","update_count":7,"packages":[{"name":"daft","old_version":"0.7.11","new_version":"0.7.14","repository_url":"https://github.com/Eventual-Inc/Daft"},{"name":"boto3","old_version":"1.43.6","new_version":"1.43.11","repository_url":"https://github.com/boto/boto3"},{"name":"azure-storage-blob","old_version":"12.28.0","new_version":"12.29.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"azure-storage-file-datalake","old_version":"12.23.0","new_version":"12.24.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"fastmcp","old_version":"3.2.4","new_version":"3.3.1","repository_url":"https://github.com/PrefectHQ/fastmcp"},{"name":"numpy","old_version":"2.4.4","new_version":"2.4.6","repository_url":"https://github.com/numpy/numpy"},{"name":"pymdown-extensions","old_version":"10.21.2","new_version":"10.21.3","repository_url":"https://github.com/facelessuser/pymdown-extensions"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-deps group with 7 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [daft](https://github.com/Eventual-Inc/Daft) | `0.7.11` | `0.7.14` |\n| [boto3](https://github.com/boto/boto3) | `1.43.6` | `1.43.11` |\n| [azure-storage-blob](https://github.com/Azure/azure-sdk-for-python) | `12.28.0` | `12.29.0` |\n| [azure-storage-file-datalake](https://github.com/Azure/azure-sdk-for-python) | `12.23.0` | `12.24.0` |\n| [fastmcp](https://github.com/PrefectHQ/fastmcp) | `3.2.4` | `3.3.1` |\n| [numpy](https://github.com/numpy/numpy) | `2.4.4` | `2.4.6` |\n| [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) | `10.21.2` | `10.21.3` |\n\nUpdates `daft` from 0.7.11 to 0.7.14\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Eventual-Inc/Daft/releases\"\u003edaft's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.7.14\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed 🚀\u003c/h2\u003e\n\u003ch2\u003e✨ Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat(flotilla): hint users to switch to flight_shuffle on large shuffles \u003ca href=\"https://github.com/colin-ho\"\u003e\u003ccode\u003e@​colin-ho\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6962\"\u003e#6962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add uuidv7 generation \u003ca href=\"https://github.com/everettVT\"\u003e\u003ccode\u003e@​everettVT\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6909\"\u003e#6909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(flotilla): Distributed Limit Counter \u003ca href=\"https://github.com/colin-ho\"\u003e\u003ccode\u003e@​colin-ho\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6942\"\u003e#6942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add JSON functions json_array_length, json_object_keys, json_tuple \u003ca href=\"https://github.com/XuQianJin-Stars\"\u003e\u003ccode\u003e@​XuQianJin-Stars\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6945\"\u003e#6945\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add conv function for PySpark parity \u003ca href=\"https://github.com/YuangGao\"\u003e\u003ccode\u003e@​YuangGao\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6910\"\u003e#6910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: ASOF join benchmarking scripts \u003ca href=\"https://github.com/euanlimzx\"\u003e\u003ccode\u003e@​euanlimzx\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6940\"\u003e#6940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(show): env defaults and auto alignment for preview output \u003ca href=\"https://github.com/BABTUNA\"\u003e\u003ccode\u003e@​BABTUNA\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6856\"\u003e#6856\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(temporal): add Spark-style temporal aliases \u003ca href=\"https://github.com/BABTUNA\"\u003e\u003ccode\u003e@​BABTUNA\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6830\"\u003e#6830\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: hash(-0.0) == hash(0.0) \u003ca href=\"https://github.com/rchowell\"\u003e\u003ccode\u003e@​rchowell\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6963\"\u003e#6963\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: short-circuit on empty micropartitions \u003ca href=\"https://github.com/rchowell\"\u003e\u003ccode\u003e@​rchowell\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6956\"\u003e#6956\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🚀 Performance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eperf(parquet): rewrite reader with arrow-rs public decoder API \u003ca href=\"https://github.com/colin-ho\"\u003e\u003ccode\u003e@​colin-ho\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6952\"\u003e#6952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eperf(flotilla): Coalesce task outputs based on byte threshold \u003ca href=\"https://github.com/colin-ho\"\u003e\u003ccode\u003e@​colin-ho\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6943\"\u003e#6943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eperf(shuffle): Write one shuffle file per task instead of N partition files \u003ca href=\"https://github.com/colin-ho\"\u003e\u003ccode\u003e@​colin-ho\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6948\"\u003e#6948\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e📖 Documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003edocs: Update API references and fix code examples \u003ca href=\"https://github.com/colin-ho\"\u003e\u003ccode\u003e@​colin-ho\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6938\"\u003e#6938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs(examples): migrate text-embeddings example to public bucket \u003ca href=\"https://github.com/colin-ho\"\u003e\u003ccode\u003e@​colin-ho\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6941\"\u003e#6941\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🔧 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: migrate daft.io.lance to daft_lance \u003ca href=\"https://github.com/rchowell\"\u003e\u003ccode\u003e@​rchowell\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6957\"\u003e#6957\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the all group across 1 directory with 4 updates @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6863\"\u003e#6863\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⬆️ Dependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the all group across 1 directory with 4 updates @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6863\"\u003e#6863\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Eventual-Inc/Daft/compare/v0.7.13...v0.7.14\"\u003ehttps://github.com/Eventual-Inc/Daft/compare/v0.7.13...v0.7.14\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.7.13\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed 🚀\u003c/h2\u003e\n\u003ch2\u003e✨ Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add forward ASOF joins \u003ca href=\"https://github.com/euanlimzx\"\u003e\u003ccode\u003e@​euanlimzx\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6918\"\u003e#6918\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Eventual-Inc/Daft/commit/afa4b9d61f0807609dddd1d523ccacf7fe0f160a\"\u003e\u003ccode\u003eafa4b9d\u003c/code\u003e\u003c/a\u003e perf(parquet): rewrite reader with arrow-rs public decoder API (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6952\"\u003e#6952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Eventual-Inc/Daft/commit/c41da6a8915472b8a2564c9879bf304c4d3b59b9\"\u003e\u003ccode\u003ec41da6a\u003c/code\u003e\u003c/a\u003e perf(flotilla): Coalesce task outputs based on byte threshold (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6943\"\u003e#6943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Eventual-Inc/Daft/commit/d3c584c5b3fca1659329a4681f90d824355a170e\"\u003e\u003ccode\u003ed3c584c\u003c/code\u003e\u003c/a\u003e feat(flotilla): hint users to switch to flight_shuffle on large shuffles (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6962\"\u003e#6962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Eventual-Inc/Daft/commit/7a2c5cdbb2e2c220e5324e14d3ac87069a919c9b\"\u003e\u003ccode\u003e7a2c5cd\u003c/code\u003e\u003c/a\u003e fix: hash(-0.0) == hash(0.0) (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6963\"\u003e#6963\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Eventual-Inc/Daft/commit/8ae8dfcfbd1fa7a4a67e38cc6695a3ccf5666e44\"\u003e\u003ccode\u003e8ae8dfc\u003c/code\u003e\u003c/a\u003e chore: migrate daft.io.lance to daft_lance (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6957\"\u003e#6957\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Eventual-Inc/Daft/commit/3e3debab5dc184df236ee7c29c54de8616ee0432\"\u003e\u003ccode\u003e3e3deba\u003c/code\u003e\u003c/a\u003e fix: short-circuit on empty micropartitions (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6956\"\u003e#6956\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Eventual-Inc/Daft/commit/803ebe9e26e41e23ee07bd0d559b9371f2ba17b2\"\u003e\u003ccode\u003e803ebe9\u003c/code\u003e\u003c/a\u003e docs: Update API references and fix code examples (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6938\"\u003e#6938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Eventual-Inc/Daft/commit/6524d6340c511c20f990e0ce633d12e76fe4d31a\"\u003e\u003ccode\u003e6524d63\u003c/code\u003e\u003c/a\u003e perf(shuffle): Write one shuffle file per task instead of N partition files (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Eventual-Inc/Daft/commit/f725fe8f0281621c372dd762e33d09b6f19b6308\"\u003e\u003ccode\u003ef725fe8\u003c/code\u003e\u003c/a\u003e feat: add uuidv7 generation (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6909\"\u003e#6909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Eventual-Inc/Daft/commit/9beb5f258b5a88a3fc2dafd7d59b0f5190b847f1\"\u003e\u003ccode\u003e9beb5f2\u003c/code\u003e\u003c/a\u003e feat(flotilla): Distributed Limit Counter (\u003ca href=\"https://redirect.github.com/Eventual-Inc/Daft/issues/6942\"\u003e#6942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Eventual-Inc/Daft/compare/v0.7.11...v0.7.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.43.6 to 1.43.11\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/c628e75265dc9d48b40a216c72575e46348bbd21\"\u003e\u003ccode\u003ec628e75\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.11'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/ac6f929ef6687ea327a2c108d27a9be29c929483\"\u003e\u003ccode\u003eac6f929\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/bb47b732471871fd1fadd0270ea3ae7e4960ecd5\"\u003e\u003ccode\u003ebb47b73\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/d8c26e0d16ce4c45ae61bd48806eb13c376bffd8\"\u003e\u003ccode\u003ed8c26e0\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.10'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/4ed1db810f9a4d6b99cdde0efc1ceb12afc12ade\"\u003e\u003ccode\u003e4ed1db8\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.10' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/413e36a90be5a8b4b0acbe6e252ed2685cc47b9d\"\u003e\u003ccode\u003e413e36a\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/401448dd2089da9d1294b29307f2c58a41750fbb\"\u003e\u003ccode\u003e401448d\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/6d47260e8d2940d3fe3ad96bf5f2e2f0500dfacb\"\u003e\u003ccode\u003e6d47260\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.9'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/df96d6dc6d8faca315b905732bdcb89eeb0a252c\"\u003e\u003ccode\u003edf96d6d\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.9' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/7fb98723970e63519544ad72418d7143eafe003d\"\u003e\u003ccode\u003e7fb9872\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.9\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.43.6...1.43.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `azure-storage-blob` from 12.28.0 to 12.29.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Azure/azure-sdk-for-python/releases\"\u003eazure-storage-blob's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eazure-storage-blob_12.29.0\u003c/h2\u003e\n\u003ch2\u003e12.29.0 (2026-05-14)\u003c/h2\u003e\n\u003ch3\u003eFeatures Added\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStable release of features from 12.29.0b1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugs Fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed an issue where \u003ccode\u003eBlobClient\u003c/code\u003e's \u003ccode\u003edownload_blob\u003c/code\u003e did not retry upon\n\u003ccode\u003eServiceReponseError\u003c/code\u003e and \u003ccode\u003eServiceResponseTimeoutError\u003c/code\u003e exceptions\u003c/li\u003e\n\u003cli\u003eFixed various issues with configuring logging via \u003ccode\u003elogging_enable\u003c/code\u003e and \u003ccode\u003elogging_body\u003c/code\u003e keywords on a per-request\nbasis and with retries. Prior to this fix logging may have not behaved as expected, especially on retries.\u003c/li\u003e\n\u003cli\u003eFix a potential memory leak caused by improper exception handling that could occur under rare circumstances.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/e73548b8a2e8fa20c3ae9114e94b548cb69a309e\"\u003e\u003ccode\u003ee73548b\u003c/code\u003e\u003c/a\u003e Release date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/60f7b1669ff9fbb04fb0655054ac8963a1a7c8fc\"\u003e\u003ccode\u003e60f7b16\u003c/code\u003e\u003c/a\u003e Changed release date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/5280297029137c50a658d9076eee9f0904314ff1\"\u003e\u003ccode\u003e5280297\u003c/code\u003e\u003c/a\u003e Modified release date to 5/12/2026\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/15e1ae938b23ef5615b354c9d0e0ce4d53b45080\"\u003e\u003ccode\u003e15e1ae9\u003c/code\u003e\u003c/a\u003e \u003cem\u003e\u003cstrong\u003eNO_CI\u003c/strong\u003e\u003c/em\u003e [Doc] Update references to wiki pages (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/46169\"\u003e#46169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/3f5c4d24273a6de44dbbb3499a6df1684a0dbba2\"\u003e\u003ccode\u003e3f5c4d2\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ecibuildwheel\u003c/code\u003e not necessary in \u003ccode\u003ebuild-system\u003c/code\u003e metadata for `azure-storage-ex...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/5b5b757fd10bd3df17085d1d2004185652154c93\"\u003e\u003ccode\u003e5b5b757\u003c/code\u003e\u003c/a\u003e Modified release date to 2026-05-11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/8b9a3e5b05be15f247d0b01fa82bce38dfda627a\"\u003e\u003ccode\u003e8b9a3e5\u003c/code\u003e\u003c/a\u003e [Storage][101] Cherry pick recent fixes and release prep (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/46659\"\u003e#46659\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/fdae976c1db9fbab1b313bd41703e1c3c863404b\"\u003e\u003ccode\u003efdae976\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into release/storage/stg101\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/1e540de672e6e5f51f4e9302491b0809978e8966\"\u003e\u003ccode\u003e1e540de\u003c/code\u003e\u003c/a\u003e Fix typing contract for max_concurrency in File Share client (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45637\"\u003e#45637\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/fa44dea36fbb8948acb7035a25b2a918cb9e29db\"\u003e\u003ccode\u003efa44dea\u003c/code\u003e\u003c/a\u003e Fix typing contract for max_concurrency in Datalake client (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45631\"\u003e#45631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Azure/azure-sdk-for-python/compare/azure-storage-blob_12.28.0...azure-storage-blob_12.29.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `azure-storage-file-datalake` from 12.23.0 to 12.24.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Azure/azure-sdk-for-python/releases\"\u003eazure-storage-file-datalake's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eazure-storage-file-datalake_12.24.0\u003c/h2\u003e\n\u003ch2\u003e12.24.0 (2026-05-14)\u003c/h2\u003e\n\u003ch3\u003eFeatures Added\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStable release of features from 12.24.0b1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugs Fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed various issues with configuring logging via \u003ccode\u003elogging_enable\u003c/code\u003e and \u003ccode\u003elogging_body\u003c/code\u003e keywords on a per-request\nbasis and with retries. Prior to this fix logging may have not behaved as expected, especially on retries.\u003c/li\u003e\n\u003cli\u003eFix a potential memory leak caused by improper exception handling that could occur under rare circumstances.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/e73548b8a2e8fa20c3ae9114e94b548cb69a309e\"\u003e\u003ccode\u003ee73548b\u003c/code\u003e\u003c/a\u003e Release date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/60f7b1669ff9fbb04fb0655054ac8963a1a7c8fc\"\u003e\u003ccode\u003e60f7b16\u003c/code\u003e\u003c/a\u003e Changed release date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/5280297029137c50a658d9076eee9f0904314ff1\"\u003e\u003ccode\u003e5280297\u003c/code\u003e\u003c/a\u003e Modified release date to 5/12/2026\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/15e1ae938b23ef5615b354c9d0e0ce4d53b45080\"\u003e\u003ccode\u003e15e1ae9\u003c/code\u003e\u003c/a\u003e \u003cem\u003e\u003cstrong\u003eNO_CI\u003c/strong\u003e\u003c/em\u003e [Doc] Update references to wiki pages (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/46169\"\u003e#46169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/3f5c4d24273a6de44dbbb3499a6df1684a0dbba2\"\u003e\u003ccode\u003e3f5c4d2\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ecibuildwheel\u003c/code\u003e not necessary in \u003ccode\u003ebuild-system\u003c/code\u003e metadata for `azure-storage-ex...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/5b5b757fd10bd3df17085d1d2004185652154c93\"\u003e\u003ccode\u003e5b5b757\u003c/code\u003e\u003c/a\u003e Modified release date to 2026-05-11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/8b9a3e5b05be15f247d0b01fa82bce38dfda627a\"\u003e\u003ccode\u003e8b9a3e5\u003c/code\u003e\u003c/a\u003e [Storage][101] Cherry pick recent fixes and release prep (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/46659\"\u003e#46659\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/fdae976c1db9fbab1b313bd41703e1c3c863404b\"\u003e\u003ccode\u003efdae976\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into release/storage/stg101\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/af6334ecf970329c55428e72a36daef26a51a858\"\u003e\u003ccode\u003eaf6334e\u003c/code\u003e\u003c/a\u003e Port setup.py to pyproject.toml for keyvault data-plane packages (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45650\"\u003e#45650\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/97a4b1bff84a6179a05b6c5840b3cc957ea2b637\"\u003e\u003ccode\u003e97a4b1b\u003c/code\u003e\u003c/a\u003e [Identity] Update changelog (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45683\"\u003e#45683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Azure/azure-sdk-for-python/compare/azure-storage-file-datalake_12.23.0...azure-storage-file-datalake_12.24.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastmcp` from 3.2.4 to 3.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1: Loop There It Is\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3.1 is a hotfix for the 3.3 packaging split. Clean installs of 3.3.0 could fail on standalone component imports like \u003ccode\u003efrom fastmcp.tools import tool\u003c/code\u003e because component modules reached auth and task primitives through \u003ccode\u003efastmcp.server\u003c/code\u003e, pulling in the server/provider stack and exposing a circular import.\u003c/p\u003e\n\u003cp\u003eComponent-level auth and task primitives now live in lightweight utility modules, with the old server import paths preserved as compatibility re-exports. Component imports stay lightweight, existing server-facing imports continue to work, and the release also includes small docs corrections from the 3.3 rollout.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(docs): use valid FA icon on client-only package page by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4139\"\u003ePrefectHQ/fastmcp#4139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecouple component imports from server by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4150\"\u003ePrefectHQ/fastmcp#4150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.3.0: Slim Reaper\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3 ships \u003ccode\u003efastmcp-slim\u003c/code\u003e, a new lightweight distribution that separates the client from the server stack. It also closes out a meaningful backlog of security hardening, observability improvements, and auth additions that accumulated through the 3.2 cycle.\u003c/p\u003e\n\u003ch2\u003efastmcp-slim\u003c/h2\u003e\n\u003cp\u003eThe full FastMCP package pulls in Starlette, Uvicorn, and the rest of the server machinery — necessary for running a server, but wasteful if you're writing a client, a script, or an agent that just needs to talk to MCP. \u003ccode\u003efastmcp-slim\u003c/code\u003e is a dependency-light distribution that ships the client and transport layer without any of that.\u003c/p\u003e\n\u003cp\u003eThe import namespace is unchanged:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom fastmcp import Client\n\u003cp\u003easync with Client(\u0026quot;\u003ca href=\"https://example.com/mcp\"\u003ehttps://example.com/mcp\u003c/a\u003e\u0026quot;) as client:\nresult = await client.call_tool(\u0026quot;my_tool\u0026quot;, {\u0026quot;arg\u0026quot;: \u0026quot;value\u0026quot;})\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eInstall \u003ccode\u003efastmcp-slim[client]\u003c/code\u003e anywhere you want FastMCP's client without the server footprint — CI environments, lightweight agents, library dependencies that shouldn't force Uvicorn on downstream users.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003eThe OAuth proxy received three hardening upgrades. Silent consent is now guarded against AS-in-the-middle attacks — a malicious authorization server can no longer silently approve a consent it wasn't meant to handle. Redirect URI allowlist matching now rejects dot-segment paths (\u003ccode\u003e/../\u003c/code\u003e, \u003ccode\u003e/./\u003c/code\u003e) that could otherwise bypass prefix checks. And \u003ccode\u003eResponseCachingMiddleware\u003c/code\u003e partitions its cache by access token, closing a gap where different users could see each other's cached responses.\u003c/p\u003e\n\u003ch2\u003eAuth\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eAzureB2CProvider\u003c/code\u003e adds first-class support for Azure AD B2C user flows. The OCI provider is fixed for 3.x installs. And \u003ccode\u003eOAuthProxy\u003c/code\u003e gains a public \u003ccode\u003eupdate_scopes()\u003c/code\u003e API for updating the proxy's required scopes after initialization — useful for servers that determine scope requirements at runtime.\u003c/p\u003e\n\u003ch2\u003eObservability\u003c/h2\u003e\n\u003cp\u003eOTEL instrumentation is now fully compliant with MCP semantic conventions. List operations (\u003ccode\u003elist_tools\u003c/code\u003e, \u003ccode\u003elist_resources\u003c/code\u003e, \u003ccode\u003elist_prompts\u003c/code\u003e, \u003ccode\u003elist_resource_templates\u003c/code\u003e) are instrumented, and delegate spans on proxy servers are enriched with backend attributes.\u003c/p\u003e\n\u003ch2\u003eThread Affinity\u003c/h2\u003e\n\u003cp\u003eSync tools run in a thread pool by default. If your tool holds thread-local state or is bound to a specific thread (UI frameworks, some database drivers), you can now opt out:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/d8dcc273cac9f6f17889a1b60adbdc654f948a50\"\u003e\u003ccode\u003ed8dcc27\u003c/code\u003e\u003c/a\u003e Decouple component imports from server (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4150\"\u003e#4150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/255e3e491082d8fbaeb3ccf25be6983cbab8b657\"\u003e\u003ccode\u003e255e3e4\u003c/code\u003e\u003c/a\u003e fix(docs): use valid FA icon on client-only package page (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4139\"\u003e#4139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/73df4dcaeeba6f985607f633786d38db6caf23f7\"\u003e\u003ccode\u003e73df4dc\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4096\"\u003e#4096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/ee48a0fd6e077e1c32e996f7b51fd442e31c514f\"\u003e\u003ccode\u003eee48a0f\u003c/code\u003e\u003c/a\u003e Refine fastmcp-slim packaging (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4125\"\u003e#4125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/bb4894d2159cd10f0c07f038db9c56b14fb99586\"\u003e\u003ccode\u003ebb4894d\u003c/code\u003e\u003c/a\u003e Add fastmcp-slim for client-only installs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4122\"\u003e#4122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/8209093871af25bc3ceb50bfbcec317632218afd\"\u003e\u003ccode\u003e8209093\u003c/code\u003e\u003c/a\u003e fix(http): terminate active streamable-HTTP transports before lifespan shutdo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/cf59a4511ff1980fd932215ef886e665c829bdbf\"\u003e\u003ccode\u003ecf59a45\u003c/code\u003e\u003c/a\u003e Fix OCI Provider issue in 3.x version. Add OCI auth provider example … (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4116\"\u003e#4116\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/89b99ecfb987781735295869d2e3d620dde7af4c\"\u003e\u003ccode\u003e89b99ec\u003c/code\u003e\u003c/a\u003e fix(proxy): fall back to live identifier for backend_* span attributes (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4109\"\u003e#4109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/310314cf149a18d0a76e5703ee98f80ffb035171\"\u003e\u003ccode\u003e310314c\u003c/code\u003e\u003c/a\u003e fix: cli option --no-banner is NOT passed to cli but server-spec in-correctly...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/28722f846a0319913a4a7b67dd65131d615214b6\"\u003e\u003ccode\u003e28722f8\u003c/code\u003e\u003c/a\u003e fix: drop exc_info for expected tool failures, remove unreachable ValidationE...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.2.4...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `numpy` from 2.4.4 to 2.4.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numpy/numpy/releases\"\u003enumpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.4.6 (May 18, 2026)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.6 Release Notes\u003c/h1\u003e\n\u003cp\u003eNumPy 2.4.6 is a quick release that fixes a regression discovered in the 2.4.5\nrelease.\u003c/p\u003e\n\u003cp\u003eThis release supports Python versions 3.11-3.14\u003c/p\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eA total of 4 people contributed to this release. People with a \u0026quot;+\u0026quot; by their\nnames contributed a patch for the first time.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e!EarlMilktea\u003c/li\u003e\n\u003cli\u003eCharles Harris\u003c/li\u003e\n\u003cli\u003eSebastian Berg\u003c/li\u003e\n\u003cli\u003eWarren Weckesser\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePull requests merged\u003c/h2\u003e\n\u003cp\u003eA total of 4 pull requests were merged for this release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/31444\"\u003e#31444\u003c/a\u003e: MAINT: Prepare 2.4.x for further development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/31453\"\u003e#31453\u003c/a\u003e: BUG: Fix regression in \u003ccode\u003earr.conj()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/31459\"\u003e#31459\u003c/a\u003e: BUG: \u003ccode\u003enp.linalg.svd(..., hermitian=True)\u003c/code\u003e returns non-unitary...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/31460\"\u003e#31460\u003c/a\u003e: BUG: Don't call INCREF/DECREF on descr in NpyStringAcquireAllocator...\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.5 (May 15, 2026)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.5 Release Notes\u003c/h1\u003e\n\u003cp\u003eNumPy 2.4.5 is a patch release that fixes bugs discovered after the 2.4.4\nrelease, has some typing improvements, and maintains infrastructure.\u003c/p\u003e\n\u003cp\u003eThis release supports Python versions 3.11-3.14\u003c/p\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eA total of 17 people contributed to this release. People with a \u0026quot;+\u0026quot; by their\nnames contributed a patch for the first time.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAleksei Nikiforov\u003c/li\u003e\n\u003cli\u003eAnarion Zuo +\u003c/li\u003e\n\u003cli\u003eAnkit Ahlawat\u003c/li\u003e\n\u003cli\u003eBreno Favaretto +\u003c/li\u003e\n\u003cli\u003eCharles Harris\u003c/li\u003e\n\u003cli\u003eIgor Krivenko +\u003c/li\u003e\n\u003cli\u003eIjtihed Kilani +\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eMaarten Baert +\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/b832a09cf2a169c833dd2371e7c07aa00b293242\"\u003e\u003ccode\u003eb832a09\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/31462\"\u003e#31462\u003c/a\u003e from charris/prepare-2.4.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/57cc147d2ceacffc6534642bfbdebb3a80428e1e\"\u003e\u003ccode\u003e57cc147\u003c/code\u003e\u003c/a\u003e REL: Prepare for the NumPy 2.4.6 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/0c72b0b53b6b83c004e434b2c7855e73c000d21e\"\u003e\u003ccode\u003e0c72b0b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/31459\"\u003e#31459\u003c/a\u003e from charris/backport-31347\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/9778d26e0475d381ccb7817c3b4dd8cacef2b9eb\"\u003e\u003ccode\u003e9778d26\u003c/code\u003e\u003c/a\u003e BUG: core: Don't call INCREF/DECREF on descr in NpyStringAcquireAllocator. (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/e0e38767d5d0f848ab44befeedcad71e8ef589c7\"\u003e\u003ccode\u003ee0e3876\u003c/code\u003e\u003c/a\u003e BUG: core: Don't call INCREF/DECREF on descr in NpyStringAcquireAllocator. (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/d1bffeb9ec4ec0bf029c94ea35abffa92d5c30f2\"\u003e\u003ccode\u003ed1bffeb\u003c/code\u003e\u003c/a\u003e BUG: \u003ccode\u003enp.linalg.svd(..., hermitian=True)\u003c/code\u003e returns non-unitary \u003ccode\u003evh\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/31347\"\u003e#31347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/8d8d7e5a14a1da0bfb0faf609a7a7610c431e6e9\"\u003e\u003ccode\u003e8d8d7e5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/31453\"\u003e#31453\u003c/a\u003e from seberg/issue-31452\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/bddaab7ace45f90148d8f2bb6e67daab2d45ec76\"\u003e\u003ccode\u003ebddaab7\u003c/code\u003e\u003c/a\u003e BUG: Fix regression in \u003ccode\u003earr.conj()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/37a1ecca8dff09b2c579a991194ac55b9971f3a7\"\u003e\u003ccode\u003e37a1ecc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/31444\"\u003e#31444\u003c/a\u003e from charris/begin-2.4.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/3c0e043217a759a8a948ade158fec14348c3b459\"\u003e\u003ccode\u003e3c0e043\u003c/code\u003e\u003c/a\u003e MAINT: Prepare 2.4.x for further development\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/numpy/numpy/compare/v2.4.4...v2.4.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pymdown-extensions` from 10.21.2 to 10.21.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facelessuser/pymdown-extensions/releases\"\u003epymdown-extensions's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e10.21.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Fix regression that allows a snippet to be loaded outside of the base path using directory traversal when\n\u003ccode\u003erestrict_base_path\u003c/code\u003e is enabled (the default). Found by \u003ca href=\"https://github.com/gistrec\"\u003e\u003ccode\u003e@​gistrec\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/pymdown-extensions/commit/42628414c6591b1a1ce211157090783e3b2242d6\"\u003e\u003ccode\u003e4262841\u003c/code\u003e\u003c/a\u003e Fix spelling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/pymdown-extensions/commit/63b7835776d703d6c339cf2110d9888f676efc0c\"\u003e\u003ccode\u003e63b7835\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/pymdown-extensions/commit/3d185501daaa1424c4a8d42124112c44ef6ab635\"\u003e\u003ccode\u003e3d18550\u003c/code\u003e\u003c/a\u003e Docs: update js deps\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/facelessuser/pymdown-extensions/compare/10.21.2...10.21.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/atlanhq/application-sdk/pull/1806","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/atlanhq%2Fapplication-sdk/issues/1806","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1806/packages"}},{"old_version":"3.2.4","new_version":"3.3.1","update_type":"minor","path":null,"pr_created_at":"2026-05-19T04:56:08.000Z","version_change":"3.2.4 → 3.3.1","issue":{"uuid":"4474522459","node_id":"PR_kwDOO4MTNc7c7BZE","number":432,"state":"open","title":"deps(deps): bump the python-minor-and-patch group across 1 directory with 6 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-19T04:56:08.000Z","updated_at":"2026-05-19T04:56:08.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps): bump","group_name":"python-minor-and-patch","update_count":6,"packages":[{"name":"uv","old_version":"0.11.12","new_version":"0.11.15","repository_url":"https://github.com/astral-sh/uv"},{"name":"fastmcp","old_version":"3.2.4","new_version":"3.3.1","repository_url":"https://github.com/PrefectHQ/fastmcp"},{"name":"openai","old_version":"2.36.0","new_version":"2.37.0","repository_url":"https://github.com/openai/openai-python"},{"name":"click","old_version":"8.3.3","new_version":"8.4.0","repository_url":"https://github.com/pallets/click"},{"name":"pymdown-extensions","old_version":"10.21.2","new_version":"10.21.3","repository_url":"https://github.com/facelessuser/pymdown-extensions"},{"name":"mkdocs-git-revision-date-localized-plugin","old_version":"1.5.1","new_version":"1.5.2","repository_url":"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-and-patch group with 6 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [uv](https://github.com/astral-sh/uv) | `0.11.12` | `0.11.15` |\n| [fastmcp](https://github.com/PrefectHQ/fastmcp) | `3.2.4` | `3.3.1` |\n| [openai](https://github.com/openai/openai-python) | `2.36.0` | `2.37.0` |\n| [click](https://github.com/pallets/click) | `8.3.3` | `8.4.0` |\n| [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) | `10.21.2` | `10.21.3` |\n| [mkdocs-git-revision-date-localized-plugin](https://github.com/timvink/mkdocs-git-revision-date-localized-plugin) | `1.5.1` | `1.5.2` |\n\n\nUpdates `uv` from 0.11.12 to 0.11.15\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/uv/releases\"\u003euv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.11.15\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-18.\u003c/p\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a TAR parser differential, see \u003ca href=\"https://github.com/astral-sh/tokio-tar/security/advisories/GHSA-3cv2-h65g-fgmm\"\u003eGHSA-3cv2-h65g-fgmm\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19463\"\u003e#19463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforce that entry points cannot escape in the scripts directory, see \u003ca href=\"https://github.com/astral-sh/uv/security/advisories/GHSA-4gg8-gxpx-9rph\"\u003eGHSA-4gg8-gxpx-9rph\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19464\"\u003e#19464\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML v1.1 -\u0026gt; v1.0 backwards compatibility for source distributions (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18741\"\u003e#18741\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for Azure request signing (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19421\"\u003e#19421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eApply stricter validation to all wheel filename segments (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19364\"\u003e#19364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject empty strings as an invalid package name (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19435\"\u003e#19435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse structured errors for signing authentication failures (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19422\"\u003e#19422\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003euv audit: Add JSON output (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19305\"\u003e#19305\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect \u003ccode\u003erequired-environments\u003c/code\u003e in \u003ccode\u003euv pip compile\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19378\"\u003e#19378\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid parsing JSON manifest when local Python is available (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19398\"\u003e#19398\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid walking nested directories in linker conflict registration (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19382\"\u003e#19382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize async wheel ZIP writing (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19383\"\u003e#19383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix dead \u0026quot;already trimmed\u0026quot; fast-path in \u003ccode\u003eVersion::only_release_trimmed\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19425\"\u003e#19425\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eApply workspace-member \u003ccode\u003e[tool.uv.sources]\u003c/code\u003e credentials under \u003ccode\u003euv sync --frozen\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19423\"\u003e#19423\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSkip empty directories in uv build outputs (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19437\"\u003e#19437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Git submodule handling when using relative paths (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/12156\"\u003e#12156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix line number reporting in netrc parsing (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19452\"\u003e#19452\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMove Bazel auth helper setup into integration guide (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19392\"\u003e#19392\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall uv 0.11.15\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.11.15/uv-installer.sh | sh\r\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/uv/blob/main/CHANGELOG.md\"\u003euv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.11.15\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-18.\u003c/p\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a TAR parser differential, see \u003ca href=\"https://github.com/astral-sh/tokio-tar/security/advisories/GHSA-3cv2-h65g-fgmm\"\u003eGHSA-3cv2-h65g-fgmm\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19463\"\u003e#19463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforce that entry points cannot escape in the scripts directory, see \u003ca href=\"https://github.com/astral-sh/uv/security/advisories/GHSA-4gg8-gxpx-9rph\"\u003eGHSA-4gg8-gxpx-9rph\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19464\"\u003e#19464\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML v1.1 -\u0026gt; v1.0 backwards compatibility for source distributions (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18741\"\u003e#18741\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for Azure request signing (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19421\"\u003e#19421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eApply stricter validation to all wheel filename segments (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19364\"\u003e#19364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject empty strings as an invalid package name (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19435\"\u003e#19435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse structured errors for signing authentication failures (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19422\"\u003e#19422\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003euv audit: Add JSON output (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19305\"\u003e#19305\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect \u003ccode\u003erequired-environments\u003c/code\u003e in \u003ccode\u003euv pip compile\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19378\"\u003e#19378\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid parsing JSON manifest when local Python is available (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19398\"\u003e#19398\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid walking nested directories in linker conflict registration (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19382\"\u003e#19382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize async wheel ZIP writing (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19383\"\u003e#19383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix dead \u0026quot;already trimmed\u0026quot; fast-path in \u003ccode\u003eVersion::only_release_trimmed\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19425\"\u003e#19425\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eApply workspace-member \u003ccode\u003e[tool.uv.sources]\u003c/code\u003e credentials under \u003ccode\u003euv sync --frozen\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19423\"\u003e#19423\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSkip empty directories in uv build outputs (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19437\"\u003e#19437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Git submodule handling when using relative paths (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/12156\"\u003e#12156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix line number reporting in netrc parsing (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19452\"\u003e#19452\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMove Bazel auth helper setup into integration guide (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19392\"\u003e#19392\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.11.14\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-12.\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Astral mirror URL override (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19206\"\u003e#19206\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/3cffe97c2e48c9e49422c738da3af95919dd0bf5\"\u003e\u003ccode\u003e3cffe97\u003c/code\u003e\u003c/a\u003e Fix crates.io publish script lockfile (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/19473\"\u003e#19473\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/de16a7b1a30c54e3137db0d414ff250a1c0ae427\"\u003e\u003ccode\u003ede16a7b\u003c/code\u003e\u003c/a\u003e Bump version to 0.11.15 (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/19472\"\u003e#19472\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/cf826cc4e0feeafb23e4e52b85929848ab2d16a7\"\u003e\u003ccode\u003ecf826cc\u003c/code\u003e\u003c/a\u003e Disable \u003ccode\u003etest_simultaneous_create_set_then_move\u003c/code\u003e on Linux (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/19469\"\u003e#19469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/2d566bced5152ba9da3aedbc02f1dd087bfeb8e9\"\u003e\u003ccode\u003e2d566bc\u003c/code\u003e\u003c/a\u003e Allow retry of \u003ccode\u003ecustom-publish-crates\u003c/code\u003e separately from \u003ccode\u003eannounce\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/19470\"\u003e#19470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/0588b8fb3505235ed97fc511a874a3ce0cbd9b72\"\u003e\u003ccode\u003e0588b8f\u003c/code\u003e\u003c/a\u003e Run release builds on maturin version bumps in CI (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/19466\"\u003e#19466\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/9a65753e9a8d0e99e7079114d78001311444c718\"\u003e\u003ccode\u003e9a65753\u003c/code\u003e\u003c/a\u003e Enforce that entry points cannot escape in the scripts directory (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/19464\"\u003e#19464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/d77d849816de6278f61d3f385b70b2735ca2f0fd\"\u003e\u003ccode\u003ed77d849\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Update maturin to v1.13.2 (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/19445\"\u003e#19445\u003c/a\u003e)\u0026quot; (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/19465\"\u003e#19465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/5373e96b15609291995a630704ef08cea31b4b08\"\u003e\u003ccode\u003e5373e96\u003c/code\u003e\u003c/a\u003e Update Rust crate rustls to v0.23.40 (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/19250\"\u003e#19250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/fb8d3d46ac08ab5fc88f7a96c89f55860f343012\"\u003e\u003ccode\u003efb8d3d4\u003c/code\u003e\u003c/a\u003e Update Rust crate rustls-pki-types to v1.14.1 (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/19251\"\u003e#19251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/078480dc40fdc6d2e56145730dacfb2744da5940\"\u003e\u003ccode\u003e078480d\u003c/code\u003e\u003c/a\u003e Configure maturin and uv so \u003ccode\u003euv run\u003c/code\u003e can be used to work on uv itself (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/19461\"\u003e#19461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/uv/compare/0.11.12...0.11.15\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastmcp` from 3.2.4 to 3.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1: Loop There It Is\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3.1 is a hotfix for the 3.3 packaging split. Clean installs of 3.3.0 could fail on standalone component imports like \u003ccode\u003efrom fastmcp.tools import tool\u003c/code\u003e because component modules reached auth and task primitives through \u003ccode\u003efastmcp.server\u003c/code\u003e, pulling in the server/provider stack and exposing a circular import.\u003c/p\u003e\n\u003cp\u003eComponent-level auth and task primitives now live in lightweight utility modules, with the old server import paths preserved as compatibility re-exports. Component imports stay lightweight, existing server-facing imports continue to work, and the release also includes small docs corrections from the 3.3 rollout.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(docs): use valid FA icon on client-only package page by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4139\"\u003ePrefectHQ/fastmcp#4139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecouple component imports from server by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4150\"\u003ePrefectHQ/fastmcp#4150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.3.0: Slim Reaper\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3 ships \u003ccode\u003efastmcp-slim\u003c/code\u003e, a new lightweight distribution that separates the client from the server stack. It also closes out a meaningful backlog of security hardening, observability improvements, and auth additions that accumulated through the 3.2 cycle.\u003c/p\u003e\n\u003ch2\u003efastmcp-slim\u003c/h2\u003e\n\u003cp\u003eThe full FastMCP package pulls in Starlette, Uvicorn, and the rest of the server machinery — necessary for running a server, but wasteful if you're writing a client, a script, or an agent that just needs to talk to MCP. \u003ccode\u003efastmcp-slim\u003c/code\u003e is a dependency-light distribution that ships the client and transport layer without any of that.\u003c/p\u003e\n\u003cp\u003eThe import namespace is unchanged:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom fastmcp import Client\n\u003cp\u003easync with Client(\u0026quot;\u003ca href=\"https://example.com/mcp\"\u003ehttps://example.com/mcp\u003c/a\u003e\u0026quot;) as client:\nresult = await client.call_tool(\u0026quot;my_tool\u0026quot;, {\u0026quot;arg\u0026quot;: \u0026quot;value\u0026quot;})\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eInstall \u003ccode\u003efastmcp-slim[client]\u003c/code\u003e anywhere you want FastMCP's client without the server footprint — CI environments, lightweight agents, library dependencies that shouldn't force Uvicorn on downstream users.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003eThe OAuth proxy received three hardening upgrades. Silent consent is now guarded against AS-in-the-middle attacks — a malicious authorization server can no longer silently approve a consent it wasn't meant to handle. Redirect URI allowlist matching now rejects dot-segment paths (\u003ccode\u003e/../\u003c/code\u003e, \u003ccode\u003e/./\u003c/code\u003e) that could otherwise bypass prefix checks. And \u003ccode\u003eResponseCachingMiddleware\u003c/code\u003e partitions its cache by access token, closing a gap where different users could see each other's cached responses.\u003c/p\u003e\n\u003ch2\u003eAuth\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eAzureB2CProvider\u003c/code\u003e adds first-class support for Azure AD B2C user flows. The OCI provider is fixed for 3.x installs. And \u003ccode\u003eOAuthProxy\u003c/code\u003e gains a public \u003ccode\u003eupdate_scopes()\u003c/code\u003e API for updating the proxy's required scopes after initialization — useful for servers that determine scope requirements at runtime.\u003c/p\u003e\n\u003ch2\u003eObservability\u003c/h2\u003e\n\u003cp\u003eOTEL instrumentation is now fully compliant with MCP semantic conventions. List operations (\u003ccode\u003elist_tools\u003c/code\u003e, \u003ccode\u003elist_resources\u003c/code\u003e, \u003ccode\u003elist_prompts\u003c/code\u003e, \u003ccode\u003elist_resource_templates\u003c/code\u003e) are instrumented, and delegate spans on proxy servers are enriched with backend attributes.\u003c/p\u003e\n\u003ch2\u003eThread Affinity\u003c/h2\u003e\n\u003cp\u003eSync tools run in a thread pool by default. If your tool holds thread-local state or is bound to a specific thread (UI frameworks, some database drivers), you can now opt out:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/d8dcc273cac9f6f17889a1b60adbdc654f948a50\"\u003e\u003ccode\u003ed8dcc27\u003c/code\u003e\u003c/a\u003e Decouple component imports from server (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4150\"\u003e#4150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/255e3e491082d8fbaeb3ccf25be6983cbab8b657\"\u003e\u003ccode\u003e255e3e4\u003c/code\u003e\u003c/a\u003e fix(docs): use valid FA icon on client-only package page (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4139\"\u003e#4139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/73df4dcaeeba6f985607f633786d38db6caf23f7\"\u003e\u003ccode\u003e73df4dc\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4096\"\u003e#4096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/ee48a0fd6e077e1c32e996f7b51fd442e31c514f\"\u003e\u003ccode\u003eee48a0f\u003c/code\u003e\u003c/a\u003e Refine fastmcp-slim packaging (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4125\"\u003e#4125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/bb4894d2159cd10f0c07f038db9c56b14fb99586\"\u003e\u003ccode\u003ebb4894d\u003c/code\u003e\u003c/a\u003e Add fastmcp-slim for client-only installs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4122\"\u003e#4122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/8209093871af25bc3ceb50bfbcec317632218afd\"\u003e\u003ccode\u003e8209093\u003c/code\u003e\u003c/a\u003e fix(http): terminate active streamable-HTTP transports before lifespan shutdo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/cf59a4511ff1980fd932215ef886e665c829bdbf\"\u003e\u003ccode\u003ecf59a45\u003c/code\u003e\u003c/a\u003e Fix OCI Provider issue in 3.x version. Add OCI auth provider example … (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4116\"\u003e#4116\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/89b99ecfb987781735295869d2e3d620dde7af4c\"\u003e\u003ccode\u003e89b99ec\u003c/code\u003e\u003c/a\u003e fix(proxy): fall back to live identifier for backend_* span attributes (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4109\"\u003e#4109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/310314cf149a18d0a76e5703ee98f80ffb035171\"\u003e\u003ccode\u003e310314c\u003c/code\u003e\u003c/a\u003e fix: cli option --no-banner is NOT passed to cli but server-spec in-correctly...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/28722f846a0319913a4a7b67dd65131d615214b6\"\u003e\u003ccode\u003e28722f8\u003c/code\u003e\u003c/a\u003e fix: drop exc_info for expected tool failures, remove unreachable ValidationE...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.2.4...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openai` from 2.36.0 to 2.37.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/openai/openai-python/releases\"\u003eopenai's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.37.0\u003c/h2\u003e\n\u003ch2\u003e2.37.0 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.36.0...v2.37.0\"\u003ev2.36.0...v2.37.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add service_tier parameter to responses compact method (\u003ca href=\"https://github.com/openai/openai-python/commit/625827c5509ece3c40e5002be37a9bd9d91b5374\"\u003e625827c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal/types:\u003c/strong\u003e support eagerly validating pydantic iterators (\u003ca href=\"https://github.com/openai/openai-python/commit/7e527bc927cc58b74d7619abf7f1fbcfff8bddfa\"\u003e7e527bc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unnecessary client_id when using workload identity provider for auth (\u003ca href=\"https://github.com/openai/openai-python/commit/c39ea8d12a010052d7f02cebe8daabd2d1f89597\"\u003ec39ea8d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add missing f-string prefix in file type error message (\u003ca href=\"https://github.com/openai/openai-python/commit/c85ebd935cb4b80e7e97ce255437684f6411fb00\"\u003ec85ebd9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/openai/openai-python/blob/main/CHANGELOG.md\"\u003eopenai's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.37.0 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.36.0...v2.37.0\"\u003ev2.36.0...v2.37.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add service_tier parameter to responses compact method (\u003ca href=\"https://github.com/openai/openai-python/commit/625827c5509ece3c40e5002be37a9bd9d91b5374\"\u003e625827c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal/types:\u003c/strong\u003e support eagerly validating pydantic iterators (\u003ca href=\"https://github.com/openai/openai-python/commit/7e527bc927cc58b74d7619abf7f1fbcfff8bddfa\"\u003e7e527bc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unnecessary client_id when using workload identity provider for auth (\u003ca href=\"https://github.com/openai/openai-python/commit/c39ea8d12a010052d7f02cebe8daabd2d1f89597\"\u003ec39ea8d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add missing f-string prefix in file type error message (\u003ca href=\"https://github.com/openai/openai-python/commit/c85ebd935cb4b80e7e97ce255437684f6411fb00\"\u003ec85ebd9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/658be644f48028ea3c7b1545034470fda75a70ba\"\u003e\u003ccode\u003e658be64\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3213\"\u003e#3213\u003c/a\u003e from openai/release-please--branches--main--changes-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/8a7cac34cbc64fe02854beb3659f4bb5f46815f9\"\u003e\u003ccode\u003e8a7cac3\u003c/code\u003e\u003c/a\u003e release: 2.37.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/9b4bf8edbac6aab217f1ac4436a47cbca2cad43b\"\u003e\u003ccode\u003e9b4bf8e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/openai/openai-python/issues/1903\"\u003e#1903\u003c/a\u003e from stainless-sdks/dev/jtian/remove-unnecessary-params\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/c39ea8d12a010052d7f02cebe8daabd2d1f89597\"\u003e\u003ccode\u003ec39ea8d\u003c/code\u003e\u003c/a\u003e feat: Remove unnecessary client_id when using workload identity provider for ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/7e527bc927cc58b74d7619abf7f1fbcfff8bddfa\"\u003e\u003ccode\u003e7e527bc\u003c/code\u003e\u003c/a\u003e feat(internal/types): support eagerly validating pydantic iterators\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/625827c5509ece3c40e5002be37a9bd9d91b5374\"\u003e\u003ccode\u003e625827c\u003c/code\u003e\u003c/a\u003e feat(api): add service_tier parameter to responses compact method\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/c85ebd935cb4b80e7e97ce255437684f6411fb00\"\u003e\u003ccode\u003ec85ebd9\u003c/code\u003e\u003c/a\u003e fix(client): add missing f-string prefix in file type error message\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/openai/openai-python/compare/v2.36.0...v2.37.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.3.3 to 8.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.4.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.4.0/\"\u003ehttps://pypi.org/project/click/8.4.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-4-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-4-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/30\"\u003ehttps://github.com/pallets/click/milestone/30\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eParamType\u003c/code\u003e typing improvements. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3371\"\u003e#3371\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParamType\u003c/code\u003e is now a generic abstract base class,\nparameterized by its converted value type.\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.convert\u003c/code\u003e return types are narrowed on all\nconcrete types (\u003ccode\u003estr\u003c/code\u003e for :class:\u003ccode\u003eSTRING\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e for\n:class:\u003ccode\u003eINT\u003c/code\u003e, etc.).\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.to_info_dict\u003c/code\u003e returns specific\n:class:\u003ccode\u003e~typing.TypedDict\u003c/code\u003e subclasses instead of\n\u003ccode\u003edict[str, Any]\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:class:\u003ccode\u003eCompositeParamType\u003c/code\u003e and the number-range base are now\ngeneric with abstract methods.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRefactor \u003ccode\u003econvert_type\u003c/code\u003e to extract type inference into a private\n\u003ccode\u003e_guess_type\u003c/code\u003e helper, and add :func:\u003ccode\u003etyping.overload\u003c/code\u003e signatures.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3372\"\u003e#3372\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eParameter\u003c/code\u003e typing improvements. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2805\"\u003e#2805\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParameter\u003c/code\u003e is now an abstract base class, making explicit\nthat it cannot be instantiated directly.\u003c/li\u003e\n\u003cli\u003e:attr:\u003ccode\u003eParameter.name\u003c/code\u003e is now \u003ccode\u003estr\u003c/code\u003e instead of \u003ccode\u003estr | None\u003c/code\u003e.\nWhen \u003ccode\u003eexpose_value=False\u003c/code\u003e, the name is set to \u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e instead\nof \u003ccode\u003eNone\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ectx\u003c/code\u003e parameter of :meth:\u003ccode\u003eParameter.get_error_hint\u003c/code\u003e is now\ntyped as \u003ccode\u003eContext | None\u003c/code\u003e, matching the runtime behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSplit string values from \u003ccode\u003edefault_map\u003c/code\u003e for parameters with \u003ccode\u003enargs \u0026gt; 1\u003c/code\u003e\nor :class:\u003ccode\u003eTuple\u003c/code\u003e type, matching environment variable behavior.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2745\"\u003e#2745\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3364\"\u003e#3364\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAuto-detect \u003ccode\u003etype=UNPROCESSED\u003c/code\u003e for \u003ccode\u003eflag_value\u003c/code\u003e of non-basic types\n(not \u003ccode\u003estr\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e, \u003ccode\u003efloat\u003c/code\u003e, or \u003ccode\u003ebool\u003c/code\u003e), so programmer-provided\nPython objects like classes and enum members are passed through unchanged\ninstead of being stringified. Previously \u003ccode\u003etype=click.UNPROCESSED\u003c/code\u003e had\nto be set explicitly. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2012\"\u003e#2012\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3363\"\u003e#3363\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe error hint now uses \u003ccode\u003eCommand.get_help_option_names\u003c/code\u003e to pick\nnon-shadowed help option names, so \u003ccode\u003eTry '... -h'\u003c/code\u003e no longer points to a\nsubcommand option that shadows \u003ccode\u003e-h\u003c/code\u003e. All surviving names are shown\n(\u003ccode\u003e-h/--help\u003c/code\u003e). \u003ca href=\"https://redirect.github.com/pallets/click/issues/2790\"\u003e#2790\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3208\"\u003e#3208\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix readline functionality on non-Windows platforms. Prompt text is now\npassed directly to readline instead of being printed separately, allowing\nproper backspace, line editing, and line wrapping behavior. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2968\"\u003e#2968\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.4.0\u003c/h2\u003e\n\u003cp\u003eReleased 2026-05-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e:class:\u003ccode\u003eParamType\u003c/code\u003e typing improvements. :pr:\u003ccode\u003e3371\u003c/code\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParamType\u003c/code\u003e is now a generic abstract base class,\nparameterized by its converted value type.\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.convert\u003c/code\u003e return types are narrowed on all\nconcrete types (\u003ccode\u003estr\u003c/code\u003e for :class:\u003ccode\u003eSTRING\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e for\n:class:\u003ccode\u003eINT\u003c/code\u003e, etc.).\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.to_info_dict\u003c/code\u003e returns specific\n:class:\u003ccode\u003e~typing.TypedDict\u003c/code\u003e subclasses instead of\n\u003ccode\u003edict[str, Any]\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:class:\u003ccode\u003eCompositeParamType\u003c/code\u003e and the number-range base are now\ngeneric with abstract methods.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRefactor \u003ccode\u003econvert_type\u003c/code\u003e to extract type inference into a private\n\u003ccode\u003e_guess_type\u003c/code\u003e helper, and add :func:\u003ccode\u003etyping.overload\u003c/code\u003e signatures.\n:pr:\u003ccode\u003e3372\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e:class:\u003ccode\u003eParameter\u003c/code\u003e typing improvements. :pr:\u003ccode\u003e2805\u003c/code\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParameter\u003c/code\u003e is now an abstract base class, making explicit\nthat it cannot be instantiated directly.\u003c/li\u003e\n\u003cli\u003e:attr:\u003ccode\u003eParameter.name\u003c/code\u003e is now \u003ccode\u003estr\u003c/code\u003e instead of \u003ccode\u003estr | None\u003c/code\u003e.\nWhen \u003ccode\u003eexpose_value=False\u003c/code\u003e, the name is set to \u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e instead\nof \u003ccode\u003eNone\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ectx\u003c/code\u003e parameter of :meth:\u003ccode\u003eParameter.get_error_hint\u003c/code\u003e is now\ntyped as \u003ccode\u003eContext | None\u003c/code\u003e, matching the runtime behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSplit string values from \u003ccode\u003edefault_map\u003c/code\u003e for parameters with \u003ccode\u003enargs \u0026gt; 1\u003c/code\u003e\nor :class:\u003ccode\u003eTuple\u003c/code\u003e type, matching environment variable behavior.\n:issue:\u003ccode\u003e2745\u003c/code\u003e :pr:\u003ccode\u003e3364\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAuto-detect \u003ccode\u003etype=UNPROCESSED\u003c/code\u003e for \u003ccode\u003eflag_value\u003c/code\u003e of non-basic types\n(not \u003ccode\u003estr\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e, \u003ccode\u003efloat\u003c/code\u003e, or \u003ccode\u003ebool\u003c/code\u003e), so programmer-provided\nPython objects like classes and enum members are passed through unchanged\ninstead of being stringified. Previously \u003ccode\u003etype=click.UNPROCESSED\u003c/code\u003e had\nto be set explicitly. :issue:\u003ccode\u003e2012\u003c/code\u003e :pr:\u003ccode\u003e3363\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe error hint now uses :meth:\u003ccode\u003eCommand.get_help_option_names\u003c/code\u003e to pick\nnon-shadowed help option names, so \u003ccode\u003eTry '... -h'\u003c/code\u003e no longer points to a\nsubcommand option that shadows \u003ccode\u003e-h\u003c/code\u003e. All surviving names are shown\n(\u003ccode\u003e-h/--help\u003c/code\u003e). :issue:\u003ccode\u003e2790\u003c/code\u003e :pr:\u003ccode\u003e3208\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix readline functionality on non-Windows platforms. Prompt text is now\npassed directly to readline instead of being printed separately, allowing\nproper backspace, line editing, and line wrapping behavior. :issue:\u003ccode\u003e2968\u003c/code\u003e\n:pr:\u003ccode\u003e2969\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUse :func:\u003ccode\u003eos.startfile\u003c/code\u003e on Windows to open URLs in :func:\u003ccode\u003eopen_url\u003c/code\u003e,\nreplacing the \u003ccode\u003estart\u003c/code\u003e built-in which cannot be invoked without\n\u003ccode\u003eshell=True\u003c/code\u003e. :issue:\u003ccode\u003e3164\u003c/code\u003e :pr:\u003ccode\u003e3186\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix Fish shell completion errors when option help text contains newlines.\n:issue:\u003ccode\u003e3043\u003c/code\u003e :pr:\u003ccode\u003e3126\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/41f410fb7528305d7e87c8cfa704f6c2456f57fc\"\u003e\u003ccode\u003e41f410f\u003c/code\u003e\u003c/a\u003e Release 8.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e3e69e3bf8d749ac1a632f2ece4d38ec7f6588f5\"\u003e\u003ccode\u003ee3e69e3\u003c/code\u003e\u003c/a\u003e Add type annotations for instance attributes in \u003ccode\u003eutils\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3422\"\u003e#3422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/3bb230dcd5d751f8605b46e9df5a541639d5fd4e\"\u003e\u003ccode\u003e3bb230d\u003c/code\u003e\u003c/a\u003e WIP: Fix \u003ccode\u003eHelpFormatter.write_usage\u003c/code\u003e producing spurious characters (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3434\"\u003e#3434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/63274a79d08fdc5c19220696144489f7144a8547\"\u003e\u003ccode\u003e63274a7\u003c/code\u003e\u003c/a\u003e \u003ccode\u003eclick.get_pager_file\u003c/code\u003e: add tests (\u003ca href=\"https://redirect.github.com/pallets/click/issues/1572\"\u003e#1572\u003c/a\u003e followup) (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3405\"\u003e#3405\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/0551bf53588ae87f462d336f24f853a156fefe3a\"\u003e\u003ccode\u003e0551bf5\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eHelpFormatter.write_usage\u003c/code\u003e producing spurious characters\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/fc41aa1d0b62494eb93e92ff3929601221e3abf4\"\u003e\u003ccode\u003efc41aa1\u003c/code\u003e\u003c/a\u003e Apply class-body annotations to \u003ccode\u003eKeepOpenFile\u003c/code\u003e for consistency\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/b761eda3bad977ec2f485451d85fd8ec365f0bf4\"\u003e\u003ccode\u003eb761eda\u003c/code\u003e\u003c/a\u003e Skip some tests on Windows\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/98302ac4f49e443a48abd3fbb95c86202b89547d\"\u003e\u003ccode\u003e98302ac\u003c/code\u003e\u003c/a\u003e Check \u003ccode\u003ePAGER\u003c/code\u003e usage, color preservation and edge-cases\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/dbdae170879d460e78963f8af35c5cb9c5b86e89\"\u003e\u003ccode\u003edbdae17\u003c/code\u003e\u003c/a\u003e Fix documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/1aa2d53d63ff68bf14b35931177aac9270e39713\"\u003e\u003ccode\u003e1aa2d53\u003c/code\u003e\u003c/a\u003e Redesigned tests and get_pager_file branching to be more clear and not set color\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.3.3...8.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pymdown-extensions` from 10.21.2 to 10.21.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facelessuser/pymdown-extensions/releases\"\u003epymdown-extensions's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e10.21.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Fix regression that allows a snippet to be loaded outside of the base path using directory traversal when\n\u003ccode\u003erestrict_base_path\u003c/code\u003e is enabled (the default). Found by \u003ca href=\"https://github.com/gistrec\"\u003e\u003ccode\u003e@​gistrec\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/pymdown-extensions/commit/42628414c6591b1a1ce211157090783e3b2242d6\"\u003e\u003ccode\u003e4262841\u003c/code\u003e\u003c/a\u003e Fix spelling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/pymdown-extensions/commit/63b7835776d703d6c339cf2110d9888f676efc0c\"\u003e\u003ccode\u003e63b7835\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/pymdown-extensions/commit/3d185501daaa1424c4a8d42124112c44ef6ab635\"\u003e\u003ccode\u003e3d18550\u003c/code\u003e\u003c/a\u003e Docs: update js deps\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/facelessuser/pymdown-extensions/compare/10.21.2...10.21.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-git-revision-date-localized-plugin` from 1.5.1 to 1.5.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin/releases\"\u003emkdocs-git-revision-date-localized-plugin's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.5.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGuard against \u003ccode\u003epage is None\u003c/code\u003e in mkdocs theme override Jinja2 templates by \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/timvink/mkdocs-git-revision-date-localized-plugin/pull/202\"\u003etimvink/mkdocs-git-revision-date-localized-plugin#202\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependency updates (security)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump requests from 2.32.5 to 2.33.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/timvink/mkdocs-git-revision-date-localized-plugin/pull/203\"\u003etimvink/mkdocs-git-revision-date-localized-plugin#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pytest from 8.4.2 to 9.0.3 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/timvink/mkdocs-git-revision-date-localized-plugin/pull/204\"\u003etimvink/mkdocs-git-revision-date-localized-plugin#204\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump gitpython from 3.1.45 to 3.1.50 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/timvink/mkdocs-git-revision-date-localized-plugin/pull/205\"\u003etimvink/mkdocs-git-revision-date-localized-plugin#205\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/timvink/mkdocs-git-revision-date-localized-plugin/pull/207\"\u003etimvink/mkdocs-git-revision-date-localized-plugin#207\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/timvink/mkdocs-git-revision-date-localized-plugin/pull/208\"\u003etimvink/mkdocs-git-revision-date-localized-plugin#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pygments from 2.19.2 to 2.20.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/timvink/mkdocs-git-revision-date-localized-plugin/pull/206\"\u003etimvink/mkdocs-git-revision-date-localized-plugin#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump urllib3 from 2.6.3 to 2.7.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/timvink/mkdocs-git-revision-date-localized-plugin/pull/209\"\u003etimvink/mkdocs-git-revision-date-localized-plugin#209\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin/compare/v1.5.1...v1.5.2\"\u003ehttps://github.com/timvink/mkdocs-git-revision-date-localized-plugin/compare/v1.5.1...v1.5.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin/commit/2afa3d27caae49064ebc67a963df2b602b24f668\"\u003e\u003ccode\u003e2afa3d2\u003c/code\u003e\u003c/a\u003e Bump version to 1.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin/commit/66e9b7e64fc05861cc70cd67c37de6a2702f0d60\"\u003e\u003ccode\u003e66e9b7e\u003c/code\u003e\u003c/a\u003e Document release process in CONTRIBUTING.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin/commit/2fb507060bcd11a5d2b44f6089750f54059dc610\"\u003e\u003ccode\u003e2fb5070\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/timvink/mkdocs-git-revision-date-localized-plugin/issues/209\"\u003e#209\u003c/a\u003e from timvink/dependabot/uv/urllib3-2.7.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin/commit/d0bacc8bc5524fb2bd939f9ade1b1806261cbf58\"\u003e\u003ccode\u003ed0bacc8\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.6.3 to 2.7.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin/commit/ee28ad906f2c2c9da062d1ea9efebeb63803a1c0\"\u003e\u003ccode\u003eee28ad9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/timvink/mkdocs-git-revision-date-localized-plugin/issues/208\"\u003e#208\u003c/a\u003e from timvink/dependabot/uv/gitpython-3.1.50\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin/commit/befbdab4daa5bda82a70fc11edd4f29aad62da60\"\u003e\u003ccode\u003ebefbdab\u003c/code\u003e\u003c/a\u003e Bump gitpython from 3.1.49 to 3.1.50\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin/commit/5c654ac0e4d6f063f36c2c70529f3e0c1bfe4c0d\"\u003e\u003ccode\u003e5c654ac\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/timvink/mkdocs-git-revision-date-localized-plugin/issues/206\"\u003e#206\u003c/a\u003e from timvink/dependabot/uv/pygments-2.20.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin/commit/095abddb28086e78258b1d8f57fc92802a442eaf\"\u003e\u003ccode\u003e095abdd\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/timvink/mkdocs-git-revision-date-localized-plugin/issues/207\"\u003e#207\u003c/a\u003e from timvink/dependabot/uv/gitpython-3.1.49\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin/commit/27bab6c9a3ae4aa20f3d887c10cb46b4b1887972\"\u003e\u003ccode\u003e27bab6c\u003c/code\u003e\u003c/a\u003e Bump gitpython from 3.1.47 to 3.1.49\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin/commit/301037e98fce9d3223690865186ba0d135336b88\"\u003e\u003ccode\u003e301037e\u003c/code\u003e\u003c/a\u003e Bump pygments from 2.19.2 to 2.20.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin/compare/v1.5.1...v1.5.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/mbailey/voicemode/pull/432","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbailey%2Fvoicemode/issues/432","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/432/packages"}},{"old_version":"3.2.4","new_version":"3.3.1","update_type":"minor","path":null,"pr_created_at":"2026-05-18T05:29:21.000Z","version_change":"3.2.4 → 3.3.1","issue":{"uuid":"4466499495","node_id":"PR_kwDOSQSa2M7chFhi","number":6,"state":"open","title":"deps: bump the python group across 1 directory with 5 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-18T05:29:21.000Z","updated_at":"2026-05-24T03:52:35.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps: bump","group_name":"python","update_count":5,"packages":[{"name":"fastmcp","old_version":"3.2.4","new_version":"3.3.1","repository_url":"https://github.com/PrefectHQ/fastmcp"},{"name":"uvicorn","old_version":"0.41.0","new_version":"0.47.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [fastmcp](https://github.com/PrefectHQ/fastmcp), [uvicorn](https://github.com/Kludex/uvicorn), [python-dotenv](https://github.com/theskumar/python-dotenv), [httpx](https://github.com/encode/httpx) and [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) to permit the latest version.\nUpdates `fastmcp` from 3.2.4 to 3.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1: Loop There It Is\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3.1 is a hotfix for the 3.3 packaging split. Clean installs of 3.3.0 could fail on standalone component imports like \u003ccode\u003efrom fastmcp.tools import tool\u003c/code\u003e because component modules reached auth and task primitives through \u003ccode\u003efastmcp.server\u003c/code\u003e, pulling in the server/provider stack and exposing a circular import.\u003c/p\u003e\n\u003cp\u003eComponent-level auth and task primitives now live in lightweight utility modules, with the old server import paths preserved as compatibility re-exports. Component imports stay lightweight, existing server-facing imports continue to work, and the release also includes small docs corrections from the 3.3 rollout.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(docs): use valid FA icon on client-only package page by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4139\"\u003ePrefectHQ/fastmcp#4139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecouple component imports from server by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4150\"\u003ePrefectHQ/fastmcp#4150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.3.0: Slim Reaper\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3 ships \u003ccode\u003efastmcp-slim\u003c/code\u003e, a new lightweight distribution that separates the client from the server stack. It also closes out a meaningful backlog of security hardening, observability improvements, and auth additions that accumulated through the 3.2 cycle.\u003c/p\u003e\n\u003ch2\u003efastmcp-slim\u003c/h2\u003e\n\u003cp\u003eThe full FastMCP package pulls in Starlette, Uvicorn, and the rest of the server machinery — necessary for running a server, but wasteful if you're writing a client, a script, or an agent that just needs to talk to MCP. \u003ccode\u003efastmcp-slim\u003c/code\u003e is a dependency-light distribution that ships the client and transport layer without any of that.\u003c/p\u003e\n\u003cp\u003eThe import namespace is unchanged:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom fastmcp import Client\n\u003cp\u003easync with Client(\u0026quot;\u003ca href=\"https://example.com/mcp\"\u003ehttps://example.com/mcp\u003c/a\u003e\u0026quot;) as client:\nresult = await client.call_tool(\u0026quot;my_tool\u0026quot;, {\u0026quot;arg\u0026quot;: \u0026quot;value\u0026quot;})\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eInstall \u003ccode\u003efastmcp-slim[client]\u003c/code\u003e anywhere you want FastMCP's client without the server footprint — CI environments, lightweight agents, library dependencies that shouldn't force Uvicorn on downstream users.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003eThe OAuth proxy received three hardening upgrades. Silent consent is now guarded against AS-in-the-middle attacks — a malicious authorization server can no longer silently approve a consent it wasn't meant to handle. Redirect URI allowlist matching now rejects dot-segment paths (\u003ccode\u003e/../\u003c/code\u003e, \u003ccode\u003e/./\u003c/code\u003e) that could otherwise bypass prefix checks. And \u003ccode\u003eResponseCachingMiddleware\u003c/code\u003e partitions its cache by access token, closing a gap where different users could see each other's cached responses.\u003c/p\u003e\n\u003ch2\u003eAuth\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eAzureB2CProvider\u003c/code\u003e adds first-class support for Azure AD B2C user flows. The OCI provider is fixed for 3.x installs. And \u003ccode\u003eOAuthProxy\u003c/code\u003e gains a public \u003ccode\u003eupdate_scopes()\u003c/code\u003e API for updating the proxy's required scopes after initialization — useful for servers that determine scope requirements at runtime.\u003c/p\u003e\n\u003ch2\u003eObservability\u003c/h2\u003e\n\u003cp\u003eOTEL instrumentation is now fully compliant with MCP semantic conventions. List operations (\u003ccode\u003elist_tools\u003c/code\u003e, \u003ccode\u003elist_resources\u003c/code\u003e, \u003ccode\u003elist_prompts\u003c/code\u003e, \u003ccode\u003elist_resource_templates\u003c/code\u003e) are instrumented, and delegate spans on proxy servers are enriched with backend attributes.\u003c/p\u003e\n\u003ch2\u003eThread Affinity\u003c/h2\u003e\n\u003cp\u003eSync tools run in a thread pool by default. If your tool holds thread-local state or is bound to a specific thread (UI frameworks, some database drivers), you can now opt out:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/d8dcc273cac9f6f17889a1b60adbdc654f948a50\"\u003e\u003ccode\u003ed8dcc27\u003c/code\u003e\u003c/a\u003e Decouple component imports from server (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4150\"\u003e#4150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/255e3e491082d8fbaeb3ccf25be6983cbab8b657\"\u003e\u003ccode\u003e255e3e4\u003c/code\u003e\u003c/a\u003e fix(docs): use valid FA icon on client-only package page (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4139\"\u003e#4139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/73df4dcaeeba6f985607f633786d38db6caf23f7\"\u003e\u003ccode\u003e73df4dc\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4096\"\u003e#4096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/ee48a0fd6e077e1c32e996f7b51fd442e31c514f\"\u003e\u003ccode\u003eee48a0f\u003c/code\u003e\u003c/a\u003e Refine fastmcp-slim packaging (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4125\"\u003e#4125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/bb4894d2159cd10f0c07f038db9c56b14fb99586\"\u003e\u003ccode\u003ebb4894d\u003c/code\u003e\u003c/a\u003e Add fastmcp-slim for client-only installs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4122\"\u003e#4122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/8209093871af25bc3ceb50bfbcec317632218afd\"\u003e\u003ccode\u003e8209093\u003c/code\u003e\u003c/a\u003e fix(http): terminate active streamable-HTTP transports before lifespan shutdo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/cf59a4511ff1980fd932215ef886e665c829bdbf\"\u003e\u003ccode\u003ecf59a45\u003c/code\u003e\u003c/a\u003e Fix OCI Provider issue in 3.x version. Add OCI auth provider example … (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4116\"\u003e#4116\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/89b99ecfb987781735295869d2e3d620dde7af4c\"\u003e\u003ccode\u003e89b99ec\u003c/code\u003e\u003c/a\u003e fix(proxy): fall back to live identifier for backend_* span attributes (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4109\"\u003e#4109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/310314cf149a18d0a76e5703ee98f80ffb035171\"\u003e\u003ccode\u003e310314c\u003c/code\u003e\u003c/a\u003e fix: cli option --no-banner is NOT passed to cli but server-spec in-correctly...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/28722f846a0319913a4a7b67dd65131d615214b6\"\u003e\u003ccode\u003e28722f8\u003c/code\u003e\u003c/a\u003e fix: drop exc_info for expected tool failures, remove unreachable ValidationE...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.2.4...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.41.0 to 0.47.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.47.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEagerly import the ASGI app in the parent process by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2919\"\u003eKludex/uvicorn#2919\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003essl_context_factory\u003c/code\u003e for custom \u003ccode\u003eSSLContext\u003c/code\u003e configuration by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2920\"\u003eKludex/uvicorn#2920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003efd=0\u003c/code\u003e as a valid file descriptor with reload/workers by \u003ca href=\"https://github.com/eltoder\"\u003e\u003ccode\u003e@​eltoder\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2927\"\u003eKludex/uvicorn#2927\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.46.0...0.47.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.46.0...0.47.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.46.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_max_size\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2915\"\u003eKludex/uvicorn#2915\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_ping_interval\u003c/code\u003e and \u003ccode\u003ews_ping_timeout\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2916\"\u003eKludex/uvicorn#2916\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for incoming WebSocket message buffer in websockets-sansio by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2917\"\u003eKludex/uvicorn#2917\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.45.0...0.46.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.45.0...0.46.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.45.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve forwarded client ports in proxy headers middleware by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2903\"\u003eKludex/uvicorn#2903\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003eos.PathLike\u003c/code\u003e for \u003ccode\u003elog_config\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2905\"\u003eKludex/uvicorn#2905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003elog_level\u003c/code\u003e strings case-insensitively by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2907\"\u003eKludex/uvicorn#2907\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise helpful \u003ccode\u003eImportError\u003c/code\u003e when PyYAML is missing for YAML log config by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2906\"\u003eKludex/uvicorn#2906\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert empty context for ASGI runs by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2911\"\u003eKludex/uvicorn#2911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--reset-contextvars\u003c/code\u003e flag to isolate ASGI request context by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2912\"\u003eKludex/uvicorn#2912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert \u0026quot;Emit \u003ccode\u003ehttp.disconnect\u003c/code\u003e on server shutdown for streaming responses\u0026quot; (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2829\"\u003e#2829\u003c/a\u003e) by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2913\"\u003eKludex/uvicorn#2913\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Krishnachaitanyakc\"\u003e\u003ccode\u003e@​Krishnachaitanyakc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2870\"\u003eKludex/uvicorn#2870\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.44.0...0.45.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.44.0...0.45.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.44.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplement websocket keepalive pings for websockets-sansio by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2888\"\u003eKludex/uvicorn#2888\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.43.0...0.44.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.43.0...0.44.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.43.0\u003c/h2\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEmit \u003ccode\u003ehttp.disconnect\u003c/code\u003e ASGI \u003ccode\u003ereceive()\u003c/code\u003e event on server shutting down for streaming responses (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2829\"\u003e#2829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse native \u003ccode\u003econtext\u003c/code\u003e parameter for \u003ccode\u003ecreate_task\u003c/code\u003e on Python 3.11+ (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2859\"\u003e#2859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop cast in ASGI types (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2875\"\u003e#2875\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.42.0...0.43.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.42.0...0.43.0\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.47.0 (May 14, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003essl_context_factory\u003c/code\u003e for custom \u003ccode\u003eSSLContext\u003c/code\u003e configuration (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2920\"\u003e#2920\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEagerly import the ASGI app in the parent process (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2919\"\u003e#2919\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTreat \u003ccode\u003efd=0\u003c/code\u003e as a valid file descriptor with reload/workers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2927\"\u003e#2927\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.46.0 (April 23, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_max_size\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2915\"\u003e#2915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_ping_interval\u003c/code\u003e and \u003ccode\u003ews_ping_timeout\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2916\"\u003e#2916\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for incoming WebSocket message buffer in \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2917\"\u003e#2917\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.45.0 (April 21, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--reset-contextvars\u003c/code\u003e flag to isolate ASGI request context (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2912\"\u003e#2912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003eos.PathLike\u003c/code\u003e for \u003ccode\u003elog_config\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2905\"\u003e#2905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003elog_level\u003c/code\u003e strings case-insensitively (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2907\"\u003e#2907\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRevert \u0026quot;Emit \u003ccode\u003ehttp.disconnect\u003c/code\u003e on server shutdown for streaming responses\u0026quot; (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2913\"\u003e#2913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert \u0026quot;Explicitly start ASGI run with empty context\u0026quot; (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2911\"\u003e#2911\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve forwarded client ports in proxy headers middleware (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2903\"\u003e#2903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRaise helpful \u003ccode\u003eImportError\u003c/code\u003e when PyYAML is missing for YAML log config (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2906\"\u003e#2906\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.44.0 (April 6, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement websocket keepalive pings for websockets-sansio (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2888\"\u003e#2888\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.43.0 (April 3, 2026)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/479a2c0c89186714f1aac52aecdebebf271395ac\"\u003e\u003ccode\u003e479a2c0\u003c/code\u003e\u003c/a\u003e Version 0.47.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2937\"\u003e#2937\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/89347fd166ebedf98fb3f806ce8ea44e93b1c2b5\"\u003e\u003ccode\u003e89347fd\u003c/code\u003e\u003c/a\u003e Add 7-day cooldown for dependency resolution via uv exclude-newer (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2936\"\u003e#2936\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/767315b38ae509cee9fe8ee9d09f6da920536096\"\u003e\u003ccode\u003e767315b\u003c/code\u003e\u003c/a\u003e Drop unused contents/actions permissions from zizmor workflow (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2935\"\u003e#2935\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/f25ee43e68a9678453cbca99ad96f1a447ff34af\"\u003e\u003ccode\u003ef25ee43\u003c/code\u003e\u003c/a\u003e chore(deps): bump urllib3 from 2.6.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2933\"\u003e#2933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/8782666189a3d36c978de5698620db705659bf44\"\u003e\u003ccode\u003e8782666\u003c/code\u003e\u003c/a\u003e Fix typo in \u003ccode\u003edocs/deployment/index.md\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2932\"\u003e#2932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/ad5ff87c869e8a34e9b04fcd5ca38d65c526893c\"\u003e\u003ccode\u003ead5ff87\u003c/code\u003e\u003c/a\u003e Treat \u003ccode\u003efd=0\u003c/code\u003e as a valid file descriptor with reload/workers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2927\"\u003e#2927\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/6761b2c8f9272fa0e908d0b9cdcb3cb0aa11382f\"\u003e\u003ccode\u003e6761b2c\u003c/code\u003e\u003c/a\u003e Remove Hugging Face sponsor block from docs (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2923\"\u003e#2923\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/438f64834de00708a9bb3548a36090e7a924ad84\"\u003e\u003ccode\u003e438f648\u003c/code\u003e\u003c/a\u003e Surface sponsors on welcome page and sidebar (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2921\"\u003e#2921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/10ddc6dd296cb6e432a00835abe27f1c822373c1\"\u003e\u003ccode\u003e10ddc6d\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003essl_context_factory\u003c/code\u003e for custom \u003ccode\u003eSSLContext\u003c/code\u003e configuration (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2920\"\u003e#2920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/b499bc45101d920e691e384025d728507215d4d1\"\u003e\u003ccode\u003eb499bc4\u003c/code\u003e\u003c/a\u003e Eagerly import the ASGI app in the parent process (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2919\"\u003e#2919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.41.0...0.47.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.1.0 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (#)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/607\"\u003etheskumar/python-dotenv#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e#790c5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by \u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip 000 permission tests for root user by \u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/593\"\u003etheskumar/python-dotenv#593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Windows testing to CI by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/604\"\u003etheskumar/python-dotenv#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove workflow efficiency with best practices by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/609\"\u003etheskumar/python-dotenv#609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the use of \u003ccode\u003esh\u003c/code\u003e in tests by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/612\"\u003etheskumar/python-dotenv#612\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cpackham-atlnz\"\u003e\u003ccode\u003e@​cpackham-atlnz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/597\"\u003etheskumar/python-dotenv#597\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.2] - 2026-03-01\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/607\"\u003e#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eDropped Support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in [790c5c0]\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by [\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.1] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMove more config to \u003ccode\u003epyproject.toml\u003c/code\u003e, removed \u003ccode\u003esetup.cfg\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for reading \u003ccode\u003e.env\u003c/code\u003e from FIFOs (Unix) by [\u003ca href=\"https://github.com/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.0] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade build system to use PEP 517 \u0026amp; PEP 518 to use \u003ccode\u003ebuild\u003c/code\u003e and \u003ccode\u003epyproject.toml\u003c/code\u003e by [\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/583\"\u003e#583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by [\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/579\"\u003e#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for disabling of \u003ccode\u003eload_dotenv()\u003c/code\u003e using \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e env var. by [\u003ca href=\"https://github.com/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/569\"\u003e#569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.1] - 2025-06-24\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCLI: Ensure \u003ccode\u003efind_dotenv\u003c/code\u003e work reliably on python 3.13 by [\u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d\"\u003e\u003ccode\u003e36004e0\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8\"\u003e\u003ccode\u003eeb20252\u003c/code\u003e\u003c/a\u003e docs: update changelog for v1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e\u003ccode\u003e790c5c0\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1\"\u003e\u003ccode\u003e43340da\u003c/code\u003e\u003c/a\u003e Remove the use of \u003ccode\u003esh\u003c/code\u003e in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c\"\u003e\u003ccode\u003e09d7cee\u003c/code\u003e\u003c/a\u003e docs: clarify override behavior and document FIFO support (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c\"\u003e\u003ccode\u003ec8de288\u003c/code\u003e\u003c/a\u003e ci: improve workflow efficiency with best practices (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/609\"\u003e#609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4\"\u003e\u003ccode\u003e7bd9e3d\u003c/code\u003e\u003c/a\u003e Add Windows testing to CI (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81\"\u003e\u003ccode\u003e1baaf04\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support and update to PyPy 3.11 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc\"\u003e\u003ccode\u003e4a22cf8\u003c/code\u003e\u003c/a\u003e ci: enable testing on Python 3.14t (free-threaded) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4\"\u003e\u003ccode\u003ee2e8e77\u003c/code\u003e\u003c/a\u003e Fix license specifier (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `httpx` to 0.28.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/httpx/releases\"\u003ehttpx's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.28.1\u003c/h2\u003e\n\u003ch2\u003e0.28.1 (6th December, 2024)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix SSL case where \u003ccode\u003everify=False\u003c/code\u003e together with client side certificates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/httpx/blob/master/CHANGELOG.md\"\u003ehttpx's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.28.1 (6th December, 2024)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix SSL case where \u003ccode\u003everify=False\u003c/code\u003e together with client side certificates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.28.0 (28th November, 2024)\u003c/h2\u003e\n\u003cp\u003eBe aware that the default \u003cem\u003eJSON request bodies now use a more compact representation\u003c/em\u003e. This is generally considered a prefered style, tho may require updates to test suites.\u003c/p\u003e\n\u003cp\u003eThe 0.28 release includes a limited set of deprecations...\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e:\u003c/p\u003e\n\u003cp\u003eWe are working towards a simplified SSL configuration API.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFor users of the standard \u003ccode\u003everify=True\u003c/code\u003e or \u003ccode\u003everify=False\u003c/code\u003e cases, or \u003ccode\u003everify=\u0026lt;ssl_context\u0026gt;\u003c/code\u003e case this should require no changes. The following cases have been deprecated...\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003everify\u003c/code\u003e argument as a string argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecert\u003c/code\u003e argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOur revised \u003ca href=\"https://github.com/encode/httpx/blob/master/docs/advanced/ssl.md\"\u003eSSL documentation\u003c/a\u003e covers how to implement the same behaviour with a more constrained API.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe following changes are also included\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eproxies\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eapp\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eJSON request bodies use a compact representation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3363\"\u003e#3363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReview URL percent escape sets, based on WHATWG spec. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3371\"\u003e#3371\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/encode/httpx/issues/3373\"\u003e#3373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure \u003ccode\u003ecertifi\u003c/code\u003e and \u003ccode\u003ehttpcore\u003c/code\u003e are only imported if required. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003esocks5h\u003c/code\u003e as a valid proxy scheme. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3178\"\u003e#3178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCleanup \u003ccode\u003eRequest()\u003c/code\u003e method signature in line with \u003ccode\u003eclient.request()\u003c/code\u003e and \u003ccode\u003ehttpx.request()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3378\"\u003e#3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBugfix: When passing \u003ccode\u003eparams={}\u003c/code\u003e, always strictly update rather than merge with an existing querystring. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.27.2 (27th August, 2024)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReintroduced supposedly-private \u003ccode\u003eURLTypes\u003c/code\u003e shortcut. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/2673\"\u003e#2673\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.27.1 (27th August, 2024)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for \u003ccode\u003ezstd\u003c/code\u003e content decoding using the python \u003ccode\u003ezstandard\u003c/code\u003e package is added. Installable using \u003ccode\u003ehttpx[zstd]\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3139\"\u003e#3139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved error messaging for \u003ccode\u003eInvalidURL\u003c/code\u003e exceptions. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3250\"\u003e#3250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eapp\u003c/code\u003e type signature in \u003ccode\u003eASGITransport\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3109\"\u003e#3109\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.27.0 (21st February, 2024)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/26d48e0634e6ee9cdc0533996db289ce4b430177\"\u003e\u003ccode\u003e26d48e0\u003c/code\u003e\u003c/a\u003e Version 0.28.1 (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3445\"\u003e#3445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/89599a9541af14bcf906fc4ed58ccbdf403802ba\"\u003e\u003ccode\u003e89599a9\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003everify=False\u003c/code\u003e, \u003ccode\u003ecert=...\u003c/code\u003e case. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3442\"\u003e#3442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/8ecb86f0d74ffc52d4663214fae9526bee89358d\"\u003e\u003ccode\u003e8ecb86f\u003c/code\u003e\u003c/a\u003e Add test for request params behavior changes (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3440\"\u003e#3440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/0cb7e5a2e736628e2f506d259fcf0d48cd2bde82\"\u003e\u003ccode\u003e0cb7e5a\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 11 updates (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3434\"\u003e#3434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/15e21e9ea3cad4f06e22a7e704aabefdf43d2e29\"\u003e\u003ccode\u003e15e21e9\u003c/code\u003e\u003c/a\u003e Updating deprecated docstring Client() class (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3426\"\u003e#3426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/80960fa31918d7663c3f4c3ad61661cf0e80628f\"\u003e\u003ccode\u003e80960fa\u003c/code\u003e\u003c/a\u003e Version 0.28.0. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3419\"\u003e#3419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/a33c87852b8a0dddc65e5f739af1e0a6fca4b91f\"\u003e\u003ccode\u003ea33c878\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eextensions\u003c/code\u003e type annotation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3380\"\u003e#3380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/ce7e14da27abba6574be9b3ea7cd5990556a9343\"\u003e\u003ccode\u003ece7e14d\u003c/code\u003e\u003c/a\u003e Error on verify as str. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3418\"\u003e#3418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/47f4a96ffaaaa07dca1614409549b5d7a6e7af49\"\u003e\u003ccode\u003e47f4a96\u003c/code\u003e\u003c/a\u003e Handle empty zstd responses (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3412\"\u003e#3412\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/189fc4bcbe5f314128775dec66a616ac9a31ad48\"\u003e\u003ccode\u003e189fc4b\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md, fix typo(s) (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3406\"\u003e#3406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/httpx/compare/0.27.0...0.28.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beautifulsoup4` to 4.14.3\n","html_url":"https://github.com/pete-builds/anthropic-tracker-mcp/pull/6","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/pete-builds%2Fanthropic-tracker-mcp/issues/6","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/6/packages"}},{"old_version":"3.2.4","new_version":"3.3.1","update_type":"minor","path":"the python-runtime group","pr_created_at":"2026-05-18T05:26:23.000Z","version_change":"3.2.4 → 3.3.1","issue":{"uuid":"4466486579","node_id":"PR_kwDORsO9Ws7chC7H","number":17,"state":"open","title":"fix(deps): bump fastmcp from 3.2.4 to 3.3.1 in the python-runtime group","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-18T05:26:23.000Z","updated_at":"2026-05-18T05:26:24.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"fix(deps)","packages":[{"name":"fastmcp","old_version":"3.2.4","new_version":"3.3.1","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":"the python-runtime group","ecosystem":"pip"},"body":"Bumps the python-runtime group with 1 update: [fastmcp](https://github.com/PrefectHQ/fastmcp).\n\nUpdates `fastmcp` from 3.2.4 to 3.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1: Loop There It Is\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3.1 is a hotfix for the 3.3 packaging split. Clean installs of 3.3.0 could fail on standalone component imports like \u003ccode\u003efrom fastmcp.tools import tool\u003c/code\u003e because component modules reached auth and task primitives through \u003ccode\u003efastmcp.server\u003c/code\u003e, pulling in the server/provider stack and exposing a circular import.\u003c/p\u003e\n\u003cp\u003eComponent-level auth and task primitives now live in lightweight utility modules, with the old server import paths preserved as compatibility re-exports. Component imports stay lightweight, existing server-facing imports continue to work, and the release also includes small docs corrections from the 3.3 rollout.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(docs): use valid FA icon on client-only package page by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4139\"\u003ePrefectHQ/fastmcp#4139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecouple component imports from server by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4150\"\u003ePrefectHQ/fastmcp#4150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.3.0: Slim Reaper\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3 ships \u003ccode\u003efastmcp-slim\u003c/code\u003e, a new lightweight distribution that separates the client from the server stack. It also closes out a meaningful backlog of security hardening, observability improvements, and auth additions that accumulated through the 3.2 cycle.\u003c/p\u003e\n\u003ch2\u003efastmcp-slim\u003c/h2\u003e\n\u003cp\u003eThe full FastMCP package pulls in Starlette, Uvicorn, and the rest of the server machinery — necessary for running a server, but wasteful if you're writing a client, a script, or an agent that just needs to talk to MCP. \u003ccode\u003efastmcp-slim\u003c/code\u003e is a dependency-light distribution that ships the client and transport layer without any of that.\u003c/p\u003e\n\u003cp\u003eThe import namespace is unchanged:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom fastmcp import Client\n\u003cp\u003easync with Client(\u0026quot;\u003ca href=\"https://example.com/mcp\"\u003ehttps://example.com/mcp\u003c/a\u003e\u0026quot;) as client:\nresult = await client.call_tool(\u0026quot;my_tool\u0026quot;, {\u0026quot;arg\u0026quot;: \u0026quot;value\u0026quot;})\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eInstall \u003ccode\u003efastmcp-slim[client]\u003c/code\u003e anywhere you want FastMCP's client without the server footprint — CI environments, lightweight agents, library dependencies that shouldn't force Uvicorn on downstream users.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003eThe OAuth proxy received three hardening upgrades. Silent consent is now guarded against AS-in-the-middle attacks — a malicious authorization server can no longer silently approve a consent it wasn't meant to handle. Redirect URI allowlist matching now rejects dot-segment paths (\u003ccode\u003e/../\u003c/code\u003e, \u003ccode\u003e/./\u003c/code\u003e) that could otherwise bypass prefix checks. And \u003ccode\u003eResponseCachingMiddleware\u003c/code\u003e partitions its cache by access token, closing a gap where different users could see each other's cached responses.\u003c/p\u003e\n\u003ch2\u003eAuth\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eAzureB2CProvider\u003c/code\u003e adds first-class support for Azure AD B2C user flows. The OCI provider is fixed for 3.x installs. And \u003ccode\u003eOAuthProxy\u003c/code\u003e gains a public \u003ccode\u003eupdate_scopes()\u003c/code\u003e API for updating the proxy's required scopes after initialization — useful for servers that determine scope requirements at runtime.\u003c/p\u003e\n\u003ch2\u003eObservability\u003c/h2\u003e\n\u003cp\u003eOTEL instrumentation is now fully compliant with MCP semantic conventions. List operations (\u003ccode\u003elist_tools\u003c/code\u003e, \u003ccode\u003elist_resources\u003c/code\u003e, \u003ccode\u003elist_prompts\u003c/code\u003e, \u003ccode\u003elist_resource_templates\u003c/code\u003e) are instrumented, and delegate spans on proxy servers are enriched with backend attributes.\u003c/p\u003e\n\u003ch2\u003eThread Affinity\u003c/h2\u003e\n\u003cp\u003eSync tools run in a thread pool by default. If your tool holds thread-local state or is bound to a specific thread (UI frameworks, some database drivers), you can now opt out:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/d8dcc273cac9f6f17889a1b60adbdc654f948a50\"\u003e\u003ccode\u003ed8dcc27\u003c/code\u003e\u003c/a\u003e Decouple component imports from server (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4150\"\u003e#4150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/255e3e491082d8fbaeb3ccf25be6983cbab8b657\"\u003e\u003ccode\u003e255e3e4\u003c/code\u003e\u003c/a\u003e fix(docs): use valid FA icon on client-only package page (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4139\"\u003e#4139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/73df4dcaeeba6f985607f633786d38db6caf23f7\"\u003e\u003ccode\u003e73df4dc\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4096\"\u003e#4096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/ee48a0fd6e077e1c32e996f7b51fd442e31c514f\"\u003e\u003ccode\u003eee48a0f\u003c/code\u003e\u003c/a\u003e Refine fastmcp-slim packaging (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4125\"\u003e#4125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/bb4894d2159cd10f0c07f038db9c56b14fb99586\"\u003e\u003ccode\u003ebb4894d\u003c/code\u003e\u003c/a\u003e Add fastmcp-slim for client-only installs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4122\"\u003e#4122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/8209093871af25bc3ceb50bfbcec317632218afd\"\u003e\u003ccode\u003e8209093\u003c/code\u003e\u003c/a\u003e fix(http): terminate active streamable-HTTP transports before lifespan shutdo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/cf59a4511ff1980fd932215ef886e665c829bdbf\"\u003e\u003ccode\u003ecf59a45\u003c/code\u003e\u003c/a\u003e Fix OCI Provider issue in 3.x version. Add OCI auth provider example … (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4116\"\u003e#4116\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/89b99ecfb987781735295869d2e3d620dde7af4c\"\u003e\u003ccode\u003e89b99ec\u003c/code\u003e\u003c/a\u003e fix(proxy): fall back to live identifier for backend_* span attributes (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4109\"\u003e#4109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/310314cf149a18d0a76e5703ee98f80ffb035171\"\u003e\u003ccode\u003e310314c\u003c/code\u003e\u003c/a\u003e fix: cli option --no-banner is NOT passed to cli but server-spec in-correctly...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/28722f846a0319913a4a7b67dd65131d615214b6\"\u003e\u003ccode\u003e28722f8\u003c/code\u003e\u003c/a\u003e fix: drop exc_info for expected tool failures, remove unreachable ValidationE...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.2.4...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=fastmcp\u0026package-manager=uv\u0026previous-version=3.2.4\u0026new-version=3.3.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/CaseyRo/mcp-siyuan/pull/17","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/CaseyRo%2Fmcp-siyuan/issues/17","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/17/packages"}},{"old_version":"3.2.4","new_version":"3.3.1","update_type":"minor","path":null,"pr_created_at":"2026-05-18T02:44:26.000Z","version_change":"3.2.4 → 3.3.1","issue":{"uuid":"4465891422","node_id":"PR_kwDOSSILC87cfLA3","number":20,"state":"closed","title":"deps(deps): bump fastmcp from 3.2.4 to 3.3.1","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-05-24T03:50:40.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-18T02:44:26.000Z","updated_at":"2026-05-24T03:50:42.000Z","time_to_close":522374,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps)","packages":[{"name":"fastmcp","old_version":"3.2.4","new_version":"3.3.1","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":null,"ecosystem":"pip"},"body":"Bumps [fastmcp](https://github.com/PrefectHQ/fastmcp) from 3.2.4 to 3.3.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1: Loop There It Is\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3.1 is a hotfix for the 3.3 packaging split. Clean installs of 3.3.0 could fail on standalone component imports like \u003ccode\u003efrom fastmcp.tools import tool\u003c/code\u003e because component modules reached auth and task primitives through \u003ccode\u003efastmcp.server\u003c/code\u003e, pulling in the server/provider stack and exposing a circular import.\u003c/p\u003e\n\u003cp\u003eComponent-level auth and task primitives now live in lightweight utility modules, with the old server import paths preserved as compatibility re-exports. Component imports stay lightweight, existing server-facing imports continue to work, and the release also includes small docs corrections from the 3.3 rollout.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(docs): use valid FA icon on client-only package page by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4139\"\u003ePrefectHQ/fastmcp#4139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecouple component imports from server by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4150\"\u003ePrefectHQ/fastmcp#4150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.3.0: Slim Reaper\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3 ships \u003ccode\u003efastmcp-slim\u003c/code\u003e, a new lightweight distribution that separates the client from the server stack. It also closes out a meaningful backlog of security hardening, observability improvements, and auth additions that accumulated through the 3.2 cycle.\u003c/p\u003e\n\u003ch2\u003efastmcp-slim\u003c/h2\u003e\n\u003cp\u003eThe full FastMCP package pulls in Starlette, Uvicorn, and the rest of the server machinery — necessary for running a server, but wasteful if you're writing a client, a script, or an agent that just needs to talk to MCP. \u003ccode\u003efastmcp-slim\u003c/code\u003e is a dependency-light distribution that ships the client and transport layer without any of that.\u003c/p\u003e\n\u003cp\u003eThe import namespace is unchanged:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom fastmcp import Client\n\u003cp\u003easync with Client(\u0026quot;\u003ca href=\"https://example.com/mcp\"\u003ehttps://example.com/mcp\u003c/a\u003e\u0026quot;) as client:\nresult = await client.call_tool(\u0026quot;my_tool\u0026quot;, {\u0026quot;arg\u0026quot;: \u0026quot;value\u0026quot;})\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eInstall \u003ccode\u003efastmcp-slim[client]\u003c/code\u003e anywhere you want FastMCP's client without the server footprint — CI environments, lightweight agents, library dependencies that shouldn't force Uvicorn on downstream users.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003eThe OAuth proxy received three hardening upgrades. Silent consent is now guarded against AS-in-the-middle attacks — a malicious authorization server can no longer silently approve a consent it wasn't meant to handle. Redirect URI allowlist matching now rejects dot-segment paths (\u003ccode\u003e/../\u003c/code\u003e, \u003ccode\u003e/./\u003c/code\u003e) that could otherwise bypass prefix checks. And \u003ccode\u003eResponseCachingMiddleware\u003c/code\u003e partitions its cache by access token, closing a gap where different users could see each other's cached responses.\u003c/p\u003e\n\u003ch2\u003eAuth\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eAzureB2CProvider\u003c/code\u003e adds first-class support for Azure AD B2C user flows. The OCI provider is fixed for 3.x installs. And \u003ccode\u003eOAuthProxy\u003c/code\u003e gains a public \u003ccode\u003eupdate_scopes()\u003c/code\u003e API for updating the proxy's required scopes after initialization — useful for servers that determine scope requirements at runtime.\u003c/p\u003e\n\u003ch2\u003eObservability\u003c/h2\u003e\n\u003cp\u003eOTEL instrumentation is now fully compliant with MCP semantic conventions. List operations (\u003ccode\u003elist_tools\u003c/code\u003e, \u003ccode\u003elist_resources\u003c/code\u003e, \u003ccode\u003elist_prompts\u003c/code\u003e, \u003ccode\u003elist_resource_templates\u003c/code\u003e) are instrumented, and delegate spans on proxy servers are enriched with backend attributes.\u003c/p\u003e\n\u003ch2\u003eThread Affinity\u003c/h2\u003e\n\u003cp\u003eSync tools run in a thread pool by default. If your tool holds thread-local state or is bound to a specific thread (UI frameworks, some database drivers), you can now opt out:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/d8dcc273cac9f6f17889a1b60adbdc654f948a50\"\u003e\u003ccode\u003ed8dcc27\u003c/code\u003e\u003c/a\u003e Decouple component imports from server (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4150\"\u003e#4150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/255e3e491082d8fbaeb3ccf25be6983cbab8b657\"\u003e\u003ccode\u003e255e3e4\u003c/code\u003e\u003c/a\u003e fix(docs): use valid FA icon on client-only package page (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4139\"\u003e#4139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/73df4dcaeeba6f985607f633786d38db6caf23f7\"\u003e\u003ccode\u003e73df4dc\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4096\"\u003e#4096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/ee48a0fd6e077e1c32e996f7b51fd442e31c514f\"\u003e\u003ccode\u003eee48a0f\u003c/code\u003e\u003c/a\u003e Refine fastmcp-slim packaging (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4125\"\u003e#4125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/bb4894d2159cd10f0c07f038db9c56b14fb99586\"\u003e\u003ccode\u003ebb4894d\u003c/code\u003e\u003c/a\u003e Add fastmcp-slim for client-only installs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4122\"\u003e#4122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/8209093871af25bc3ceb50bfbcec317632218afd\"\u003e\u003ccode\u003e8209093\u003c/code\u003e\u003c/a\u003e fix(http): terminate active streamable-HTTP transports before lifespan shutdo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/cf59a4511ff1980fd932215ef886e665c829bdbf\"\u003e\u003ccode\u003ecf59a45\u003c/code\u003e\u003c/a\u003e Fix OCI Provider issue in 3.x version. Add OCI auth provider example … (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4116\"\u003e#4116\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/89b99ecfb987781735295869d2e3d620dde7af4c\"\u003e\u003ccode\u003e89b99ec\u003c/code\u003e\u003c/a\u003e fix(proxy): fall back to live identifier for backend_* span attributes (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4109\"\u003e#4109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/310314cf149a18d0a76e5703ee98f80ffb035171\"\u003e\u003ccode\u003e310314c\u003c/code\u003e\u003c/a\u003e fix: cli option --no-banner is NOT passed to cli but server-spec in-correctly...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/28722f846a0319913a4a7b67dd65131d615214b6\"\u003e\u003ccode\u003e28722f8\u003c/code\u003e\u003c/a\u003e fix: drop exc_info for expected tool failures, remove unreachable ValidationE...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.2.4...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n","html_url":"https://github.com/pete-builds/mcp-unifi/pull/20","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/pete-builds%2Fmcp-unifi/issues/20","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/20/packages"}},{"old_version":"3.2.4","new_version":"3.3.1","update_type":"minor","path":"the python-packages group","pr_created_at":"2026-05-18T01:04:17.000Z","version_change":"3.2.4 → 3.3.1","issue":{"uuid":"4465562787","node_id":"PR_kwDORXBeVM7ceKBe","number":27,"state":"open","title":"deps: bump fastmcp from 3.2.4 to 3.3.1 in the python-packages group","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-18T01:04:17.000Z","updated_at":"2026-05-18T01:04:18.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps","packages":[{"name":"fastmcp","old_version":"3.2.4","new_version":"3.3.1","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":"the python-packages group","ecosystem":"pip"},"body":"Bumps the python-packages group with 1 update: [fastmcp](https://github.com/PrefectHQ/fastmcp).\n\nUpdates `fastmcp` from 3.2.4 to 3.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1: Loop There It Is\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3.1 is a hotfix for the 3.3 packaging split. Clean installs of 3.3.0 could fail on standalone component imports like \u003ccode\u003efrom fastmcp.tools import tool\u003c/code\u003e because component modules reached auth and task primitives through \u003ccode\u003efastmcp.server\u003c/code\u003e, pulling in the server/provider stack and exposing a circular import.\u003c/p\u003e\n\u003cp\u003eComponent-level auth and task primitives now live in lightweight utility modules, with the old server import paths preserved as compatibility re-exports. Component imports stay lightweight, existing server-facing imports continue to work, and the release also includes small docs corrections from the 3.3 rollout.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(docs): use valid FA icon on client-only package page by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4139\"\u003ePrefectHQ/fastmcp#4139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecouple component imports from server by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4150\"\u003ePrefectHQ/fastmcp#4150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.3.0: Slim Reaper\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3 ships \u003ccode\u003efastmcp-slim\u003c/code\u003e, a new lightweight distribution that separates the client from the server stack. It also closes out a meaningful backlog of security hardening, observability improvements, and auth additions that accumulated through the 3.2 cycle.\u003c/p\u003e\n\u003ch2\u003efastmcp-slim\u003c/h2\u003e\n\u003cp\u003eThe full FastMCP package pulls in Starlette, Uvicorn, and the rest of the server machinery — necessary for running a server, but wasteful if you're writing a client, a script, or an agent that just needs to talk to MCP. \u003ccode\u003efastmcp-slim\u003c/code\u003e is a dependency-light distribution that ships the client and transport layer without any of that.\u003c/p\u003e\n\u003cp\u003eThe import namespace is unchanged:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom fastmcp import Client\n\u003cp\u003easync with Client(\u0026quot;\u003ca href=\"https://example.com/mcp\"\u003ehttps://example.com/mcp\u003c/a\u003e\u0026quot;) as client:\nresult = await client.call_tool(\u0026quot;my_tool\u0026quot;, {\u0026quot;arg\u0026quot;: \u0026quot;value\u0026quot;})\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eInstall \u003ccode\u003efastmcp-slim[client]\u003c/code\u003e anywhere you want FastMCP's client without the server footprint — CI environments, lightweight agents, library dependencies that shouldn't force Uvicorn on downstream users.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003eThe OAuth proxy received three hardening upgrades. Silent consent is now guarded against AS-in-the-middle attacks — a malicious authorization server can no longer silently approve a consent it wasn't meant to handle. Redirect URI allowlist matching now rejects dot-segment paths (\u003ccode\u003e/../\u003c/code\u003e, \u003ccode\u003e/./\u003c/code\u003e) that could otherwise bypass prefix checks. And \u003ccode\u003eResponseCachingMiddleware\u003c/code\u003e partitions its cache by access token, closing a gap where different users could see each other's cached responses.\u003c/p\u003e\n\u003ch2\u003eAuth\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eAzureB2CProvider\u003c/code\u003e adds first-class support for Azure AD B2C user flows. The OCI provider is fixed for 3.x installs. And \u003ccode\u003eOAuthProxy\u003c/code\u003e gains a public \u003ccode\u003eupdate_scopes()\u003c/code\u003e API for updating the proxy's required scopes after initialization — useful for servers that determine scope requirements at runtime.\u003c/p\u003e\n\u003ch2\u003eObservability\u003c/h2\u003e\n\u003cp\u003eOTEL instrumentation is now fully compliant with MCP semantic conventions. List operations (\u003ccode\u003elist_tools\u003c/code\u003e, \u003ccode\u003elist_resources\u003c/code\u003e, \u003ccode\u003elist_prompts\u003c/code\u003e, \u003ccode\u003elist_resource_templates\u003c/code\u003e) are instrumented, and delegate spans on proxy servers are enriched with backend attributes.\u003c/p\u003e\n\u003ch2\u003eThread Affinity\u003c/h2\u003e\n\u003cp\u003eSync tools run in a thread pool by default. If your tool holds thread-local state or is bound to a specific thread (UI frameworks, some database drivers), you can now opt out:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/d8dcc273cac9f6f17889a1b60adbdc654f948a50\"\u003e\u003ccode\u003ed8dcc27\u003c/code\u003e\u003c/a\u003e Decouple component imports from server (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4150\"\u003e#4150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/255e3e491082d8fbaeb3ccf25be6983cbab8b657\"\u003e\u003ccode\u003e255e3e4\u003c/code\u003e\u003c/a\u003e fix(docs): use valid FA icon on client-only package page (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4139\"\u003e#4139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/73df4dcaeeba6f985607f633786d38db6caf23f7\"\u003e\u003ccode\u003e73df4dc\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4096\"\u003e#4096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/ee48a0fd6e077e1c32e996f7b51fd442e31c514f\"\u003e\u003ccode\u003eee48a0f\u003c/code\u003e\u003c/a\u003e Refine fastmcp-slim packaging (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4125\"\u003e#4125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/bb4894d2159cd10f0c07f038db9c56b14fb99586\"\u003e\u003ccode\u003ebb4894d\u003c/code\u003e\u003c/a\u003e Add fastmcp-slim for client-only installs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4122\"\u003e#4122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/8209093871af25bc3ceb50bfbcec317632218afd\"\u003e\u003ccode\u003e8209093\u003c/code\u003e\u003c/a\u003e fix(http): terminate active streamable-HTTP transports before lifespan shutdo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/cf59a4511ff1980fd932215ef886e665c829bdbf\"\u003e\u003ccode\u003ecf59a45\u003c/code\u003e\u003c/a\u003e Fix OCI Provider issue in 3.x version. Add OCI auth provider example … (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4116\"\u003e#4116\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/89b99ecfb987781735295869d2e3d620dde7af4c\"\u003e\u003ccode\u003e89b99ec\u003c/code\u003e\u003c/a\u003e fix(proxy): fall back to live identifier for backend_* span attributes (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4109\"\u003e#4109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/310314cf149a18d0a76e5703ee98f80ffb035171\"\u003e\u003ccode\u003e310314c\u003c/code\u003e\u003c/a\u003e fix: cli option --no-banner is NOT passed to cli but server-spec in-correctly...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/28722f846a0319913a4a7b67dd65131d615214b6\"\u003e\u003ccode\u003e28722f8\u003c/code\u003e\u003c/a\u003e fix: drop exc_info for expected tool failures, remove unreachable ValidationE...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.2.4...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=fastmcp\u0026package-manager=pip\u0026previous-version=3.2.4\u0026new-version=3.3.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/KaiErikNiermann/pypreset/pull/27","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/KaiErikNiermann%2Fpypreset/issues/27","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/27/packages"}},{"old_version":"\u003e=2.0","new_version":"\u003e=3.3.1","update_type":null,"path":null,"pr_created_at":"2026-05-17T23:35:41.000Z","version_change":"\u003e=2.0 → \u003e=3.3.1","issue":{"uuid":"4465278655","node_id":"PR_kwDOSffCDc7cdRGB","number":6,"state":"open","title":"deps(deps-dev): update fastmcp requirement from \u003e=2.0 to \u003e=3.3.1","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-17T23:35:41.000Z","updated_at":"2026-05-17T23:35:42.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps-dev): update","packages":[{"name":"fastmcp","old_version":"\u003e=2.0","new_version":"\u003e=3.3.1","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [fastmcp](https://github.com/PrefectHQ/fastmcp) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.3.1: Loop There It Is\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.3.1 is a hotfix for the 3.3 packaging split. Clean installs of 3.3.0 could fail on standalone component imports like \u003ccode\u003efrom fastmcp.tools import tool\u003c/code\u003e because component modules reached auth and task primitives through \u003ccode\u003efastmcp.server\u003c/code\u003e, pulling in the server/provider stack and exposing a circular import.\u003c/p\u003e\n\u003cp\u003eComponent-level auth and task primitives now live in lightweight utility modules, with the old server import paths preserved as compatibility re-exports. Component imports stay lightweight, existing server-facing imports continue to work, and the release also includes small docs corrections from the 3.3 rollout.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(docs): use valid FA icon on client-only package page by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4139\"\u003ePrefectHQ/fastmcp#4139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecouple component imports from server by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/4150\"\u003ePrefectHQ/fastmcp#4150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.3.0...v3.3.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/blob/main/docs/changelog.mdx\"\u003efastmcp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003chr /\u003e\n\u003ch2\u003etitle: \u0026quot;Changelog\u0026quot;\nicon: \u0026quot;list-check\u0026quot;\nrss: true\ntag: NEW\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.1\"\u003ev3.1.1: 'Tis But a Patch\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ePins \u003ccode\u003epydantic-monty\u003c/code\u003e below 0.0.8 to fix a breaking change in Monty that affects code mode. Monty 0.0.8 removed the \u003ccode\u003eexternal_functions\u003c/code\u003e constructor parameter, causing \u003ccode\u003eMontySandboxProvider\u003c/code\u003e to fail. This patch caps the version so existing installs work correctly.\u003c/p\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePin pydantic-monty below 0.0.8 to fix code mode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3497\"\u003e#3497\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.1.0...v3.1.1\"\u003ev3.1.0...v3.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.0\"\u003ev3.1.0: Code to Joy\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFastMCP 3.1 is the Code Mode release. The 3.0 architecture introduced providers and transforms as the extensibility layer — 3.1 puts that architecture to work, shipping the most requested capability since launch: servers that can find and execute code on behalf of agents, without requiring clients to know what tools exist.\u003c/p\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Search transforms for tool discovery by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3154\"\u003e#3154\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd experimental CodeMode transform by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3297\"\u003e#3297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Prefab Apps integration for MCP tool UIs by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3316\"\u003e#3316\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLazy-load heavy imports to reduce import time by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3295\"\u003e#3295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd http_client parameter to all token verifiers for connection pooling by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3300\"\u003e#3300\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd in-memory caching for token introspection results by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3298\"\u003e#3298\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SessionStart hook to install gh CLI in cloud sessions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3308\"\u003e#3308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty 0.0.19 type errors by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3310\"\u003e#3310\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCode Mode: Add resource limits to MontySandboxProvider by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3326\"\u003e#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept transforms as FastMCP init kwarg by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3324\"\u003e#3324\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSplit large test files to comply with loq line limit by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd -m/--module flag to \u003ccode\u003efastmcp run\u003c/code\u003e and \u003ccode\u003edev inspector\u003c/code\u003e by \u003ca href=\"https://github.com/dgenio\"\u003e\u003ccode\u003e@​dgenio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3331\"\u003e#3331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd search_result_serializer hook and serialize_tools_for_output_markdown by \u003ca href=\"https://github.com/MagnusS0\"\u003e\u003ccode\u003e@​MagnusS0\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3337\"\u003e#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd MultiAuth for composing multiple token verification sources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3335\"\u003e#3335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdds PropelAuth as an AuthProvider by \u003ca href=\"https://github.com/andrew-propelauth\"\u003e\u003ccode\u003e@​andrew-propelauth\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3358\"\u003e#3358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace vendored DI with uncalled-for by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3301\"\u003e#3301\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecompose CodeMode into composable discovery tools by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3354\"\u003e#3354\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(contrib): auto-sync MCPMixin decorators with from_function signatures by \u003ca href=\"https://github.com/AnkeshThakur\"\u003e\u003ccode\u003e@​AnkeshThakur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3323\"\u003e#3323\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Google GenAI Sampling Handler by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/2977\"\u003e#2977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ListTools, search limit, and catalog size annotation to CodeMode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3359\"\u003e#3359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow configuring FastMCP transport setting in the same way as other configuration by \u003ca href=\"https://github.com/jvdmr\"\u003e\u003ccode\u003e@​jvdmr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1796\"\u003e#1796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd include_unversioned option to VersionFilter by \u003ca href=\"https://github.com/yangbaechu\"\u003e\u003ccode\u003e@​yangbaechu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3349\"\u003e#3349\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/d8dcc273cac9f6f17889a1b60adbdc654f948a50\"\u003e\u003ccode\u003ed8dcc27\u003c/code\u003e\u003c/a\u003e Decouple component imports from server (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4150\"\u003e#4150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/255e3e491082d8fbaeb3ccf25be6983cbab8b657\"\u003e\u003ccode\u003e255e3e4\u003c/code\u003e\u003c/a\u003e fix(docs): use valid FA icon on client-only package page (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4139\"\u003e#4139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/73df4dcaeeba6f985607f633786d38db6caf23f7\"\u003e\u003ccode\u003e73df4dc\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4096\"\u003e#4096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/ee48a0fd6e077e1c32e996f7b51fd442e31c514f\"\u003e\u003ccode\u003eee48a0f\u003c/code\u003e\u003c/a\u003e Refine fastmcp-slim packaging (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4125\"\u003e#4125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/bb4894d2159cd10f0c07f038db9c56b14fb99586\"\u003e\u003ccode\u003ebb4894d\u003c/code\u003e\u003c/a\u003e Add fastmcp-slim for client-only installs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4122\"\u003e#4122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/8209093871af25bc3ceb50bfbcec317632218afd\"\u003e\u003ccode\u003e8209093\u003c/code\u003e\u003c/a\u003e fix(http): terminate active streamable-HTTP transports before lifespan shutdo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/cf59a4511ff1980fd932215ef886e665c829bdbf\"\u003e\u003ccode\u003ecf59a45\u003c/code\u003e\u003c/a\u003e Fix OCI Provider issue in 3.x version. Add OCI auth provider example … (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4116\"\u003e#4116\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/89b99ecfb987781735295869d2e3d620dde7af4c\"\u003e\u003ccode\u003e89b99ec\u003c/code\u003e\u003c/a\u003e fix(proxy): fall back to live identifier for backend_* span attributes (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/4109\"\u003e#4109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/310314cf149a18d0a76e5703ee98f80ffb035171\"\u003e\u003ccode\u003e310314c\u003c/code\u003e\u003c/a\u003e fix: cli option --no-banner is NOT passed to cli but server-spec in-correctly...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/28722f846a0319913a4a7b67dd65131d615214b6\"\u003e\u003ccode\u003e28722f8\u003c/code\u003e\u003c/a\u003e fix: drop exc_info for expected tool failures, remove unreachable ValidationE...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v2.0.0...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/livingstaccato/provide-uterm-actions-test/pull/6","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/livingstaccato%2Fprovide-uterm-actions-test/issues/6","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/6/packages"}},{"old_version":"2.13.1","new_version":"3.2.0","update_type":"major","path":null,"pr_created_at":"2026-05-16T08:28:01.000Z","version_change":"2.13.1 → 3.2.0","issue":{"uuid":"4459256565","node_id":"PR_kwDORSvhlc7cLiiL","number":1,"state":"open","title":"Bump the pip group across 1 directory with 11 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-16T08:28:01.000Z","updated_at":"2026-05-16T08:28:35.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip","update_count":11,"packages":[{"name":"fastmcp","old_version":"2.13.1","new_version":"3.2.0","repository_url":"https://github.com/PrefectHQ/fastmcp"},{"name":"flask","old_version":"3.0.3","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"},{"name":"simpleeval","old_version":"1.0.3","new_version":"1.0.5","repository_url":"https://github.com/danthedeckie/simpleeval"},{"name":"langchain-core","old_version":"0.3.49","new_version":"1.3.3","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-community","old_version":"0.3.19","new_version":"0.3.27","repository_url":"https://github.com/langchain-ai/langchain-community"},{"name":"lxml-html-clean","old_version":"0.3.1","new_version":"0.4.4","repository_url":"https://github.com/fedora-python/lxml_html_clean"},{"name":"mcp","old_version":"1.22.0","new_version":"1.23.0","repository_url":"https://github.com/modelcontextprotocol/python-sdk"},{"name":"paramiko","old_version":"3.5.0","new_version":"5.0.0","repository_url":"https://github.com/paramiko/paramiko"},{"name":"pypdf","old_version":"6.0.0","new_version":"6.10.2","repository_url":"https://github.com/py-pdf/pypdf"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"unstructured","old_version":"0.16.23","new_version":"0.18.18","repository_url":"https://github.com/Unstructured-IO/unstructured"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip group with 11 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastmcp](https://github.com/PrefectHQ/fastmcp) | `2.13.1` | `3.2.0` |\n| [flask](https://github.com/pallets/flask) | `3.0.3` | `3.1.3` |\n| [simpleeval](https://github.com/danthedeckie/simpleeval) | `1.0.3` | `1.0.5` |\n| [langchain-core](https://github.com/langchain-ai/langchain) | `0.3.49` | `1.3.3` |\n| [langchain-community](https://github.com/langchain-ai/langchain-community) | `0.3.19` | `0.3.27` |\n| [lxml-html-clean](https://github.com/fedora-python/lxml_html_clean) | `0.3.1` | `0.4.4` |\n| [mcp](https://github.com/modelcontextprotocol/python-sdk) | `1.22.0` | `1.23.0` |\n| [paramiko](https://github.com/paramiko/paramiko) | `3.5.0` | `5.0.0` |\n| [pypdf](https://github.com/py-pdf/pypdf) | `6.0.0` | `6.10.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.2.2` |\n| [unstructured](https://github.com/Unstructured-IO/unstructured) | `0.16.23` | `0.18.18` |\n\n\nUpdates `fastmcp` from 2.13.1 to 3.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.0: Show Don't Tool\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.2 is the Apps release. The 3.0 architecture gave you providers and transforms; 3.1 shipped Code Mode for tool discovery. 3.2 puts a face on it: your tools can now return interactive UIs — charts, dashboards, forms, maps — rendered right inside the conversation.\u003c/p\u003e\n\u003ch2\u003eFastMCPApp\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eFastMCPApp\u003c/code\u003e is a new provider class for building interactive applications inside MCP. It separates the tools the LLM sees (\u003ccode\u003e@app.ui()\u003c/code\u003e) from the backend tools the UI calls (\u003ccode\u003e@app.tool()\u003c/code\u003e), manages visibility automatically, and gives tool references stable identifiers that survive namespace transforms and server composition — without requiring host cooperation.\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom fastmcp import FastMCP, FastMCPApp\nfrom prefab_ui.actions.mcp import CallTool\nfrom prefab_ui.components import Column, Form, Input, Button, ForEach, Text\n\u003cp\u003eapp = FastMCPApp(\u0026quot;Contacts\u0026quot;)\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/app\"\u003e\u003ccode\u003e@​app\u003c/code\u003e\u003c/a\u003e.tool()\ndef save_contact(name: str, email: str) -\u0026gt; list[dict]:\ndb.append({\u0026quot;name\u0026quot;: name, \u0026quot;email\u0026quot;: email})\nreturn list(db)\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/app\"\u003e\u003ccode\u003e@​app\u003c/code\u003e\u003c/a\u003e.ui()\ndef contact_manager() -\u0026gt; PrefabApp:\nwith PrefabApp(state={\u0026quot;contacts\u0026quot;: list(db)}) as view:\nwith Column(gap=4):\nForEach(\u0026quot;contacts\u0026quot;, lambda c: Text(c.name))\nwith Form(on_submit=CallTool(\u0026quot;save_contact\u0026quot;)):\nInput(name=\u0026quot;name\u0026quot;, required=True)\nInput(name=\u0026quot;email\u0026quot;, required=True)\nButton(\u0026quot;Save\u0026quot;)\nreturn view\u003c/p\u003e\n\u003cp\u003emcp = FastMCP(\u0026quot;Server\u0026quot;, providers=[app])\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eThe UI is built with \u003ca href=\"https://prefab.prefect.io\"\u003ePrefab\u003c/a\u003e, a Python component library that compiles to interactive UIs. You write Python; the user sees charts, tables, forms, and dashboards. FastMCP handles the MCP Apps protocol machinery — renderer resources, CSP configuration, structured content serialization — so you don't have to.\u003c/p\u003e\n\u003cp\u003eFor simpler cases where you just want to visualize data without server interaction, set \u003ccode\u003eapp=True\u003c/code\u003e on any tool and return Prefab components directly:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e@mcp.tool(app=True)\ndef revenue_chart(year: int) -\u0026gt; PrefabApp:\n    with PrefabApp() as app:\n        BarChart(data=revenue_data, series=[ChartSeries(data_key=\u0026quot;revenue\u0026quot;)])\n    return app\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eBuilt-in Providers\u003c/h2\u003e\n\u003cp\u003eFive ready-made providers you add with a single \u003ccode\u003eadd_provider()\u003c/code\u003e call:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFileUpload\u003c/strong\u003e — drag-and-drop file upload with session-scoped storage\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/blob/main/docs/changelog.mdx\"\u003efastmcp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003chr /\u003e\n\u003ch2\u003etitle: \u0026quot;Changelog\u0026quot;\nicon: \u0026quot;list-check\u0026quot;\nrss: true\ntag: NEW\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.1\"\u003ev3.1.1: 'Tis But a Patch\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ePins \u003ccode\u003epydantic-monty\u003c/code\u003e below 0.0.8 to fix a breaking change in Monty that affects code mode. Monty 0.0.8 removed the \u003ccode\u003eexternal_functions\u003c/code\u003e constructor parameter, causing \u003ccode\u003eMontySandboxProvider\u003c/code\u003e to fail. This patch caps the version so existing installs work correctly.\u003c/p\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePin pydantic-monty below 0.0.8 to fix code mode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3497\"\u003e#3497\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.1.0...v3.1.1\"\u003ev3.1.0...v3.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.0\"\u003ev3.1.0: Code to Joy\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFastMCP 3.1 is the Code Mode release. The 3.0 architecture introduced providers and transforms as the extensibility layer — 3.1 puts that architecture to work, shipping the most requested capability since launch: servers that can find and execute code on behalf of agents, without requiring clients to know what tools exist.\u003c/p\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Search transforms for tool discovery by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3154\"\u003e#3154\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd experimental CodeMode transform by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3297\"\u003e#3297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Prefab Apps integration for MCP tool UIs by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3316\"\u003e#3316\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLazy-load heavy imports to reduce import time by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3295\"\u003e#3295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd http_client parameter to all token verifiers for connection pooling by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3300\"\u003e#3300\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd in-memory caching for token introspection results by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3298\"\u003e#3298\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SessionStart hook to install gh CLI in cloud sessions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3308\"\u003e#3308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty 0.0.19 type errors by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3310\"\u003e#3310\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCode Mode: Add resource limits to MontySandboxProvider by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3326\"\u003e#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept transforms as FastMCP init kwarg by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3324\"\u003e#3324\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSplit large test files to comply with loq line limit by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd -m/--module flag to \u003ccode\u003efastmcp run\u003c/code\u003e and \u003ccode\u003edev inspector\u003c/code\u003e by \u003ca href=\"https://github.com/dgenio\"\u003e\u003ccode\u003e@​dgenio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3331\"\u003e#3331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd search_result_serializer hook and serialize_tools_for_output_markdown by \u003ca href=\"https://github.com/MagnusS0\"\u003e\u003ccode\u003e@​MagnusS0\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3337\"\u003e#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd MultiAuth for composing multiple token verification sources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3335\"\u003e#3335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdds PropelAuth as an AuthProvider by \u003ca href=\"https://github.com/andrew-propelauth\"\u003e\u003ccode\u003e@​andrew-propelauth\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3358\"\u003e#3358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace vendored DI with uncalled-for by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3301\"\u003e#3301\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecompose CodeMode into composable discovery tools by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3354\"\u003e#3354\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(contrib): auto-sync MCPMixin decorators with from_function signatures by \u003ca href=\"https://github.com/AnkeshThakur\"\u003e\u003ccode\u003e@​AnkeshThakur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3323\"\u003e#3323\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Google GenAI Sampling Handler by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/2977\"\u003e#2977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ListTools, search limit, and catalog size annotation to CodeMode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3359\"\u003e#3359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow configuring FastMCP transport setting in the same way as other configuration by \u003ca href=\"https://github.com/jvdmr\"\u003e\u003ccode\u003e@​jvdmr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1796\"\u003e#1796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd include_unversioned option to VersionFilter by \u003ca href=\"https://github.com/yangbaechu\"\u003e\u003ccode\u003e@​yangbaechu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3349\"\u003e#3349\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/665514e19a78543709be85b4261153bbe98e882f\"\u003e\u003ccode\u003e665514e\u003c/code\u003e\u003c/a\u003e Add forward_resource flag to OAuthProxy (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3711\"\u003e#3711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/f189d1f7fbfd55c9f68c750a3a293e31c7586e8b\"\u003e\u003ccode\u003ef189d1f\u003c/code\u003e\u003c/a\u003e Bump pydantic-monty to 0.0.9 (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3707\"\u003e#3707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/6faa2d61f82eab670694965606fd7b14bedddc7f\"\u003e\u003ccode\u003e6faa2d6\u003c/code\u003e\u003c/a\u003e Remove hardcoded prefab-ui version from pinning warnings (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3708\"\u003e#3708\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/dd8816c6ccc733048fe6208bfc8f80ded505f993\"\u003e\u003ccode\u003edd8816c\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3701\"\u003e#3701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/d27495960af23969f11d6e1e44e2018529c1c37e\"\u003e\u003ccode\u003ed274959\u003c/code\u003e\u003c/a\u003e docs: note that custom routes are unauthenticated (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3706\"\u003e#3706\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/4a54be2d5f1ac8925a461e67cf993e0278729d4d\"\u003e\u003ccode\u003e4a54be2\u003c/code\u003e\u003c/a\u003e Add examples gallery page (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3705\"\u003e#3705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/961dd5045611e9c1bd6b7c4f5ac3aa14f0a30ce7\"\u003e\u003ccode\u003e961dd50\u003c/code\u003e\u003c/a\u003e Add interactive map example with geocoding (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3702\"\u003e#3702\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/f01d0c581c7a821a9701d6dde4d9beb95e32d479\"\u003e\u003ccode\u003ef01d0c5\u003c/code\u003e\u003c/a\u003e Add quiz example app, fix dev server empty string args (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3700\"\u003e#3700\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/85b7efd74601a72c74ac68e23599de6c032bb9c4\"\u003e\u003ccode\u003e85b7efd\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3694\"\u003e#3694\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/27abe3c3f0cc2ce1925cc3cbc7968d5637ebc82b\"\u003e\u003ccode\u003e27abe3c\u003c/code\u003e\u003c/a\u003e Add sales dashboard and live system monitor examples, bump prefab-ui to 0.17 ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v2.13.1...v3.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flask` from 3.0.3 to 3.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.2\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.2/\"\u003ehttps://pypi.org/project/Flask/3.1.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-2\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/38?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/38?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5774\"\u003e#5774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state of \u003ccode\u003esession\u003c/code\u003e is correct. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5786\"\u003e#5786\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5776\"\u003e#5776\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.1\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.1/\"\u003ehttps://pypi.org/project/Flask/3.1.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/flask/milestone/36?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/36?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. GHSA-4grg-w6v8-c28g\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5645\"\u003e#5645\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands are shown. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5673\"\u003e#5673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return \u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier for Quart. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5659\"\u003e#5659\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.0\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecations, or introduce potentially breaking changes. We encourage everyone to upgrade, and to use a tool such as \u003ca href=\"https://pypi.org/project/pip-tools/\"\u003epip-tools\u003c/a\u003e to pin all dependencies and control upgrades. Test with warnings treated as errors to be able to adapt to deprecation warnings early.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.0/\"\u003ehttps://pypi.org/project/Flask/3.1.0/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/33?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/33?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5623\"\u003e#5623\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases. Werkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5624\"\u003e#5624\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5633\"\u003e#5633\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option responses. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5496\"\u003e#5496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and \u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when opening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5504\"\u003e#5504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only through the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added \u003ccode\u003eMAX_FORM_MEMORY_SIZE\u003c/code\u003e and \u003ccode\u003eMAX_FORM_PARTS\u003c/code\u003e config. Added documentation about resource limits to the security page. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5625\"\u003e#5625\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003ePartitioned\u003c/code\u003e cookie attribute (CHIPS), with the \u003ccode\u003eSESSION_COOKIE_PARTITIONED\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5472\"\u003e#5472\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e-e path\u003c/code\u003e takes precedence over default \u003ccode\u003e.env\u003c/code\u003e and \u003ccode\u003e.flaskenv\u003c/code\u003e files. \u003ccode\u003eload_dotenv\u003c/code\u003e loads default files in addition to a path unless \u003ccode\u003eload_defaults=False\u003c/code\u003e is passed. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5628\"\u003e#5628\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport key rotation with the \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e config, a list of old secret keys that can still be used for unsigning. Extensions will need to add support. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5621\"\u003e#5621\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix how setting \u003ccode\u003ehost_matching=True\u003c/code\u003e or \u003ccode\u003esubdomain_matching=False\u003c/code\u003e interacts with \u003ccode\u003eSERVER_NAME\u003c/code\u003e. Setting \u003ccode\u003eSERVER_NAME\u003c/code\u003e no longer restricts requests to only that domain. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5553\"\u003e#5553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.trusted_hosts\u003c/code\u003e is checked during routing, and can be set through the \u003ccode\u003eTRUSTED_HOSTS\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5636\"\u003e#5636\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.0.3...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `simpleeval` from 1.0.3 to 1.0.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/danthedeckie/simpleeval/releases\"\u003esimpleeval's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.0.5\u003c/h2\u003e\n\u003cp\u003eFixes Security issues with \u0026quot;dangerous\u0026quot; modules \u0026amp; functions leaking through as attributes of other names, see:\u003c/p\u003e\n\u003cp\u003eFixes CVE-2026-32640\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/danthedeckie/simpleeval/security/advisories/GHSA-44vg-5wv2-h2hg\"\u003ehttps://github.com/danthedeckie/simpleeval/security/advisories/GHSA-44vg-5wv2-h2hg\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eBreaking Change:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eModules \u0026amp; Submodules now are not directly usable as names or as attributes of other items, if you still need this functionality, then use the new \u003ccode\u003eModuleWrapper\u003c/code\u003e, or subclass SimpleEval to bypass it.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danthedeckie/simpleeval/commit/a4659fad8f3fb855acaf7667b2a48ff9f5576b5d\"\u003e\u003ccode\u003ea4659fa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/danthedeckie/simpleeval/issues/171\"\u003e#171\u003c/a\u003e from danthedeckie/remove-module-access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danthedeckie/simpleeval/commit/7c9180c52d1fcfea468ae42cf9495d8f055a2940\"\u003e\u003ccode\u003e7c9180c\u003c/code\u003e\u003c/a\u003e version number bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danthedeckie/simpleeval/commit/cffa9f68cee54404a2ef43d949a8ae8a3311c503\"\u003e\u003ccode\u003ecffa9f6\u003c/code\u003e\u003c/a\u003e Much stricter lockdown via _check_disallowed_items plus adding ModuleWrapper\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danthedeckie/simpleeval/commit/4e7f4b81e6d32fd2c24dd5cfa2977d725e11162d\"\u003e\u003ccode\u003e4e7f4b8\u003c/code\u003e\u003c/a\u003e Add ByamB4 to contributors list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danthedeckie/simpleeval/commit/1654cbf0219345f707c79664b8657be6b8d23e33\"\u003e\u003ccode\u003e1654cbf\u003c/code\u003e\u003c/a\u003e Disallow module access \u0026amp; disallowed function access via attributes.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danthedeckie/simpleeval/commit/9cb4a7b99498c173263bd90f77bc185e160fb6b8\"\u003e\u003ccode\u003e9cb4a7b\u003c/code\u003e\u003c/a\u003e Add a few additional DISALLOW_FUNCTIONS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danthedeckie/simpleeval/commit/0425898b23abb3f1a9ed56dbb0bb4244d6350f2f\"\u003e\u003ccode\u003e0425898\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/danthedeckie/simpleeval/issues/169\"\u003e#169\u003c/a\u003e from danthedeckie/update-readme\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danthedeckie/simpleeval/commit/618bcf4b2cb322aefc76735bf091739c8148a19e\"\u003e\u003ccode\u003e618bcf4\u003c/code\u003e\u003c/a\u003e update build tools / config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danthedeckie/simpleeval/commit/88289434c3f88df4646ce37fc67a3ef9158917d6\"\u003e\u003ccode\u003e8828943\u003c/code\u003e\u003c/a\u003e bump version, and update copyright year\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danthedeckie/simpleeval/commit/97570fe4659bbafdf49d9407dc4423f3c7f0f235\"\u003e\u003ccode\u003e97570fe\u003c/code\u003e\u003c/a\u003e lint string joining fixes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/danthedeckie/simpleeval/compare/1.0.3...1.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langchain-core` from 0.3.49 to 1.3.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain-core==1.3.3\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.3.2\u003c/p\u003e\n\u003cp\u003erelease(core): 1.3.3 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37198\"\u003e#37198\u003c/a\u003e)\nfix(core): set deprecation \u003ccode\u003esince\u003c/code\u003e to 1.3.3 to match release (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37200\"\u003e#37200\u003c/a\u003e)\nfix(core, langchain): harden \u003ccode\u003eload()\u003c/code\u003e against untrusted manifests (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37197\"\u003e#37197\u003c/a\u003e)\nchore: bump notebook from 7.5.0 to 7.5.6 in /libs/core (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37109\"\u003e#37109\u003c/a\u003e)\nchore: bump types-pyyaml from 6.0.12.20250915 to 6.0.12.20260408 in /libs/core (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37129\"\u003e#37129\u003c/a\u003e)\nfix(core): preserve structured \u003ccode\u003einputs\u003c/code\u003e on tool runs in tracers (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37108\"\u003e#37108\u003c/a\u003e)\nrelease(perplexity): 1.2.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37091\"\u003e#37091\u003c/a\u003e)\nchore(docs): update x handle references (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37081\"\u003e#37081\u003c/a\u003e)\nfix(core): make \u003ccode\u003eremoval\u003c/code\u003e optional in \u003ccode\u003ewarn_deprecated\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37056\"\u003e#37056\u003c/a\u003e)\nfix(core): validate batch_size in _batch and _abatch to prevent infinite loop (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36663\"\u003e#36663\u003c/a\u003e)\nchore(core): mark stream_v2/astream_v2 as beta (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36992\"\u003e#36992\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.3.2\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.3.1\u003c/p\u003e\n\u003cp\u003erelease(core): 1.3.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36990\"\u003e#36990\u003c/a\u003e)\nfeat(core): add content-block-centric streaming (v2) (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36834\"\u003e#36834\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.3.1\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.3.0\u003c/p\u003e\n\u003cp\u003erelease(core): 1.3.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36972\"\u003e#36972\u003c/a\u003e)\nfeat(core): allow _format_output to pass through list of ToolOutputMixin instances (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36963\"\u003e#36963\u003c/a\u003e)\nchore: bump nbconvert from 7.17.0 to 7.17.1 in /libs/core (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36923\"\u003e#36923\u003c/a\u003e)\nfeat(core): Update inheritance behavior for tracer metadata for special keys (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36900\"\u003e#36900\u003c/a\u003e)\nchore: bump langsmith from 0.7.13 to 0.7.31 in /libs/core (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36813\"\u003e#36813\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.3.0\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.2.31\u003c/p\u003e\n\u003cp\u003erelease(core): release 1.3.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36851\"\u003e#36851\u003c/a\u003e)\nrelease(core): 1.3.0a3 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36829\"\u003e#36829\u003c/a\u003e)\nchore(core): keep checkpoint_ns behavior in streaming metadata for backwards compat (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36828\"\u003e#36828\u003c/a\u003e)\nfeat(core): Add chat model and LLM invocation params to traceable metadata (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36771\"\u003e#36771\u003c/a\u003e)\nfix(core): restore cloud metadata IPs and link-local range in SSRF policy (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36816\"\u003e#36816\u003c/a\u003e)\nchore(deps): bump pytest to \u003ccode\u003e9.0.3\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36801\"\u003e#36801\u003c/a\u003e)\nchore(core): harden private SSRF utilities (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36768\"\u003e#36768\u003c/a\u003e)\nfix(openai): handle content blocks without type key in responses api conversion (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36725\"\u003e#36725\u003c/a\u003e)\nchore: bump pytest from 9.0.2 to 9.0.3 in /libs/core (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36719\"\u003e#36719\u003c/a\u003e)\nrelease(core): 1.3.0.a2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36698\"\u003e#36698\u003c/a\u003e)\nfix(core): Use reference counting for storing inherited run trees to support garbage collection (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36660\"\u003e#36660\u003c/a\u003e)\ndocs(core): nit (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36685\"\u003e#36685\u003c/a\u003e)\nrelease(core): 1.3.0a1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36656\"\u003e#36656\u003c/a\u003e)\nchore(core): reduce streaming metadata / perf (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36588\"\u003e#36588\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.3.0a3\u003c/h2\u003e\n\u003cp\u003eInitial release\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/5039dfec1f8e78459540a7f1b52fb0d6d82e3f07\"\u003e\u003ccode\u003e5039dfe\u003c/code\u003e\u003c/a\u003e release(core): 1.3.3 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37198\"\u003e#37198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/55a7707837742c2f7a9b7e4a5dd428bf615f3b82\"\u003e\u003ccode\u003e55a7707\u003c/code\u003e\u003c/a\u003e fix(core): set deprecation \u003ccode\u003esince\u003c/code\u003e to 1.3.3 to match release (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37200\"\u003e#37200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/c979c6187b6d82f4bef35b10b84b39fa44806b22\"\u003e\u003ccode\u003ec979c61\u003c/code\u003e\u003c/a\u003e fix(core, langchain): harden \u003ccode\u003eload()\u003c/code\u003e against untrusted manifests (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37197\"\u003e#37197\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/d7031101da78e3f6b6c5956b48a5170c1a33292b\"\u003e\u003ccode\u003ed703110\u003c/code\u003e\u003c/a\u003e docs: update README.md (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37190\"\u003e#37190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/4d50a2a68b38e9acc53027ea7e7cc89e2d80b4c7\"\u003e\u003ccode\u003e4d50a2a\u003c/code\u003e\u003c/a\u003e ci(infra): run pre-release checks before TestPyPI publish (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37194\"\u003e#37194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/9bd730e1991baac4ea80aa07d93110dc1b52ee25\"\u003e\u003ccode\u003e9bd730e\u003c/code\u003e\u003c/a\u003e fix(fireworks): require \u003ccode\u003eapi_key\u003c/code\u003e in \u003ccode\u003eFireworksEmbeddings\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37193\"\u003e#37193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/f475f4191fc3a8d3cf14063b44d524594c080c04\"\u003e\u003ccode\u003ef475f41\u003c/code\u003e\u003c/a\u003e release(mistralai): 1.1.4 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37191\"\u003e#37191\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/7dbff48aff508b01dc231ea0cbd4e4e09da92c97\"\u003e\u003ccode\u003e7dbff48\u003c/code\u003e\u003c/a\u003e fix(mistralai): strip non-wire keys from \u003ccode\u003eToolMessage\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37188\"\u003e#37188\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/913816c440ea79295370e1af6484e17b86e5d03c\"\u003e\u003ccode\u003e913816c\u003c/code\u003e\u003c/a\u003e release(fireworks): 1.3.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37189\"\u003e#37189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/4498d3dc84a85688fa4d15476403a900bc7f9114\"\u003e\u003ccode\u003e4498d3d\u003c/code\u003e\u003c/a\u003e fix(fireworks): strip non-wire keys from \u003ccode\u003eToolMessage\u003c/code\u003e text content blocks (#...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langchain/compare/langchain-core==0.3.49...langchain-core==1.3.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langchain-community` from 0.3.19 to 0.3.27\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain-community/releases\"\u003elangchain-community's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elibs/community/v0.3.27\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ecommunity[patch]: verify ssl by default in RecursiveUrlLoader by \u003ca href=\"https://github.com/eyurtsev\"\u003e\u003ccode\u003e@​eyurtsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/136\"\u003elangchain-ai/langchain-community#136\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: Change JSON loader to be able to handle UTF-8-BOM files by \u003ca href=\"https://github.com/witlat\"\u003e\u003ccode\u003e@​witlat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/138\"\u003elangchain-ai/langchain-community#138\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWriteFileTool should create not existent parent dirs in file_path by \u003ca href=\"https://github.com/vria\"\u003e\u003ccode\u003e@​vria\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/132\"\u003elangchain-ai/langchain-community#132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e:zap: fix: update OpenAI model cost values for accuracy by \u003ca href=\"https://github.com/tdahar\"\u003e\u003ccode\u003e@​tdahar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/142\"\u003elangchain-ai/langchain-community#142\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecommunity[patch]: Prevent XXE in evernote loader by \u003ca href=\"https://github.com/eyurtsev\"\u003e\u003ccode\u003e@​eyurtsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/139\"\u003elangchain-ai/langchain-community#139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erelease 0.3.27 by \u003ca href=\"https://github.com/eyurtsev\"\u003e\u003ccode\u003e@​eyurtsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/143\"\u003elangchain-ai/langchain-community#143\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/witlat\"\u003e\u003ccode\u003e@​witlat\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/138\"\u003elangchain-ai/langchain-community#138\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vria\"\u003e\u003ccode\u003e@​vria\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/132\"\u003elangchain-ai/langchain-community#132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tdahar\"\u003e\u003ccode\u003e@​tdahar\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/142\"\u003elangchain-ai/langchain-community#142\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/langchain-ai/langchain-community/compare/libs/community/v0.3.26...libs/community/v0.3.27\"\u003ehttps://github.com/langchain-ai/langchain-community/compare/libs/community/v0.3.26...libs/community/v0.3.27\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003elibs/community/v0.3.26\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[USearch]: Intializations of ids in case self.ids is None by \u003ca href=\"https://github.com/keenborder786\"\u003e\u003ccode\u003e@​keenborder786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/99\"\u003elangchain-ai/langchain-community#99\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecommunity[patch]: drop langsmith upper bound and release 0.3.26 by \u003ca href=\"https://github.com/ccurme\"\u003e\u003ccode\u003e@​ccurme\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/127\"\u003elangchain-ai/langchain-community#127\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/keenborder786\"\u003e\u003ccode\u003e@​keenborder786\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/99\"\u003elangchain-ai/langchain-community#99\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/langchain-ai/langchain-community/compare/libs/community/v0.3.25...libs/community/v0.3.26\"\u003ehttps://github.com/langchain-ai/langchain-community/compare/libs/community/v0.3.25...libs/community/v0.3.26\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003elibs/community/v0.3.25\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: replace invalid scenexplain algorithm by \u003ca href=\"https://github.com/MichaelLi65535\"\u003e\u003ccode\u003e@​MichaelLi65535\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/59\"\u003elangchain-ai/langchain-community#59\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003einfra: specify pyopenssl in extended test deps by \u003ca href=\"https://github.com/ccurme\"\u003e\u003ccode\u003e@​ccurme\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/80\"\u003elangchain-ai/langchain-community#80\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecommunity[patch]: deprecate Tavily tools in favor of langchain-tavily implementation by \u003ca href=\"https://github.com/ccurme\"\u003e\u003ccode\u003e@​ccurme\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/79\"\u003elangchain-ai/langchain-community#79\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeprecating hugging face implementation in langchain_community by \u003ca href=\"https://github.com/CtrlMj\"\u003e\u003ccode\u003e@​CtrlMj\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/73\"\u003elangchain-ai/langchain-community#73\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003evectorstores[azure_search]: fix regression in 0.3.24  by \u003ca href=\"https://github.com/marcgibbons\"\u003e\u003ccode\u003e@​marcgibbons\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/77\"\u003elangchain-ai/langchain-community#77\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecommunity: Add cost data for aws bedrock claude 4 series models by \u003ca href=\"https://github.com/AsifMehmood97\"\u003e\u003ccode\u003e@​AsifMehmood97\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/83\"\u003elangchain-ai/langchain-community#83\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove no-untyped-def escapes by \u003ca href=\"https://github.com/cbornet\"\u003e\u003ccode\u003e@​cbornet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/17\"\u003elangchain-ai/langchain-community#17\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add search endpoint for Firecrawl Integration by \u003ca href=\"https://github.com/ftonato\"\u003e\u003ccode\u003e@​ftonato\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/87\"\u003elangchain-ai/langchain-community#87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecommunity[patch]: ssl verification should be enabled by default everywhere by \u003ca href=\"https://github.com/eyurtsev\"\u003e\u003ccode\u003e@​eyurtsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/75\"\u003elangchain-ai/langchain-community#75\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: handle image of size 0 bytes in PyPDFParser by \u003ca href=\"https://github.com/soucosmo\"\u003e\u003ccode\u003e@​soucosmo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/84\"\u003elangchain-ai/langchain-community#84\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add depandabot config by \u003ca href=\"https://github.com/eyurtsev\"\u003e\u003ccode\u003e@​eyurtsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/90\"\u003elangchain-ai/langchain-community#90\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHarden Azure ML url validation by \u003ca href=\"https://github.com/tonybaloney\"\u003e\u003ccode\u003e@​tonybaloney\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/88\"\u003elangchain-ai/langchain-community#88\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: update readme by \u003ca href=\"https://github.com/ccurme\"\u003e\u003ccode\u003e@​ccurme\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/95\"\u003elangchain-ai/langchain-community#95\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003epatch: sanitize file extension in HuggingFaceTextToSpeechModelInference by \u003ca href=\"https://github.com/eyurtsev\"\u003e\u003ccode\u003e@​eyurtsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/101\"\u003elangchain-ai/langchain-community#101\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: telegram multiformat by \u003ca href=\"https://github.com/jerryyf\"\u003e\u003ccode\u003e@​jerryyf\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/89\"\u003elangchain-ai/langchain-community#89\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecommunity: release 0.3.25 by \u003ca href=\"https://github.com/ccurme\"\u003e\u003ccode\u003e@​ccurme\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/86\"\u003elangchain-ai/langchain-community#86\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MichaelLi65535\"\u003e\u003ccode\u003e@​MichaelLi65535\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/59\"\u003elangchain-ai/langchain-community#59\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/CtrlMj\"\u003e\u003ccode\u003e@​CtrlMj\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/73\"\u003elangchain-ai/langchain-community#73\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marcgibbons\"\u003e\u003ccode\u003e@​marcgibbons\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/77\"\u003elangchain-ai/langchain-community#77\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cbornet\"\u003e\u003ccode\u003e@​cbornet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/langchain-ai/langchain-community/pull/17\"\u003elangchain-ai/langchain-community#17\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/langchain-ai/langchain-community/commits/libs/community/v0.3.27\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `lxml-html-clean` from 0.3.1 to 0.4.4\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fedora-python/lxml_html_clean/blob/main/CHANGES.rst\"\u003elxml-html-clean's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e0.4.4 (2026-02-26)\u003c/h1\u003e\n\u003ch2\u003eBugs fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where Unicode escapes in CSS were not properly decoded\nbefore security checks. This prevents attackers from bypassing filters\nusing escape sequences. (CVE-2026-28348)\u003c/li\u003e\n\u003cli\u003eFixed a security issue where \u003ccode\u003e\u0026lt;base\u0026gt;\u003c/code\u003e tags could be used for URL\nhijacking attacks. The \u003ccode\u003e\u0026lt;base\u0026gt;\u003c/code\u003e tag is now automatically removed\nwhenever the \u003ccode\u003e\u0026lt;head\u0026gt;\u003c/code\u003e tag is removed (via \u003ccode\u003epage_structure=True\u003c/code\u003e\nor manual configuration), as \u003ccode\u003e\u0026lt;base\u0026gt;\u003c/code\u003e must be inside \u003ccode\u003e\u0026lt;head\u0026gt;\u003c/code\u003e\naccording to HTML specifications. (CVE-2026-28350)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e0.4.3 (2025-10-02)\u003c/h1\u003e\n\u003ch2\u003eMaintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eTests updated to work correctly with new lxml and libxml2 releases.\u003c/li\u003e\n\u003cli\u003ePython 3.6 and 3.7 are no longer tested.\u003c/li\u003e\n\u003cli\u003eImproved documentation about CSS removal behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e0.4.2 (2025-04-09)\u003c/h1\u003e\n\u003ch2\u003eBugs fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003elxml_html_clean\u003c/code\u003e now correctly handles HTML input as bytes\nas it did before the 0.2.0 release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e0.4.1 (2024-11-15)\u003c/h1\u003e\n\u003ch2\u003eBugs fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved superfluous debug prints.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e0.4.0 (2024-11-12)\u003c/h1\u003e\n\u003ch2\u003eBugs fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003eCleaner()\u003c/code\u003e now scans for hidden JavaScript code embedded\nwithin CSS comments. In certain contexts, such as within \u003ccode\u003e\u0026lt;svg\u0026gt;\u003c/code\u003e or \u003ccode\u003e\u0026lt;math\u0026gt;\u003c/code\u003e tags,\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fedora-python/lxml_html_clean/commit/fd10d79cf8a4d4a962e139aee6d02dec02b2de7c\"\u003e\u003ccode\u003efd10d79\u003c/code\u003e\u003c/a\u003e Add more tests for different combinations of backslashes and unicode\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fedora-python/lxml_html_clean/commit/5b7e2288d9e5bda81d1fcf6a4feaed362534899e\"\u003e\u003ccode\u003e5b7e228\u003c/code\u003e\u003c/a\u003e Restore the removal of all backslashes from styles after decoding of unicode ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fedora-python/lxml_html_clean/commit/88da8f9e679190ae06f1238106dd9fbd1d87bfbb\"\u003e\u003ccode\u003e88da8f9\u003c/code\u003e\u003c/a\u003e Prepare release 0.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fedora-python/lxml_html_clean/commit/9c5612ca33b941eec4178abf8a5294b103403f34\"\u003e\u003ccode\u003e9c5612c\u003c/code\u003e\u003c/a\u003e Remove \u0026lt;base\u0026gt; tags to prevent URL hijacking attacks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fedora-python/lxml_html_clean/commit/2ef732667ddbc74ea59847bcf24b75809aaeed3b\"\u003e\u003ccode\u003e2ef7326\u003c/code\u003e\u003c/a\u003e Implement unicode escape decoding\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fedora-python/lxml_html_clean/commit/7c854afd949ff82cc6e81a666962e07b739706cf\"\u003e\u003ccode\u003e7c854af\u003c/code\u003e\u003c/a\u003e Add missing Python 3.14 to classifiers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fedora-python/lxml_html_clean/commit/80cebf7156449bd48d2d6106a70c7442874fa1f9\"\u003e\u003ccode\u003e80cebf7\u003c/code\u003e\u003c/a\u003e Continue using the package link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fedora-python/lxml_html_clean/commit/1cef82e0647549b901452f45396ded8e6b2bceab\"\u003e\u003ccode\u003e1cef82e\u003c/code\u003e\u003c/a\u003e Update safe sanitizer recommendation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fedora-python/lxml_html_clean/commit/79f35f4b7542bf87286b45764a7b0bdf6830bb36\"\u003e\u003ccode\u003e79f35f4\u003c/code\u003e\u003c/a\u003e CI: Drop Python 3.8, add 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fedora-python/lxml_html_clean/commit/fab1dd4a23cbad1cdd4f2cebd2d6cae1130565bd\"\u003e\u003ccode\u003efab1dd4\u003c/code\u003e\u003c/a\u003e Release 0.4.3\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fedora-python/lxml_html_clean/compare/0.3.1...0.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mcp` from 1.22.0 to 1.23.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/releases\"\u003emcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.23.0\u003c/h2\u003e\n\u003ch2\u003eSummary\u003c/h2\u003e\n\u003cp\u003eThis release brings us up to speed with the latest MCP spec \u003ccode\u003e2025-11-25\u003c/code\u003e. Take a look at the \u003ca href=\"https://modelcontextprotocol.io/specification/2025-11-25\"\u003elatest spec\u003c/a\u003e as well as the release \u003ca href=\"https://blog.modelcontextprotocol.io/posts/2025-11-25-first-mcp-anniversary/\"\u003eblog post.\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd tests for JSON Schema 2020-12 field preservation (SEP-1613) by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1649\"\u003emodelcontextprotocol/python-sdk#1649\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd client_secret_basic authentication support by \u003ca href=\"https://github.com/jonshea\"\u003e\u003ccode\u003e@​jonshea\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1334\"\u003emodelcontextprotocol/python-sdk#1334\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplement SEP-1577 - Sampling With Tools by \u003ca href=\"https://github.com/ochafik\"\u003e\u003ccode\u003e@​ochafik\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1594\"\u003emodelcontextprotocol/python-sdk#1594\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSEP-1330: Elicitation Enum Schema Improvements and Standards Compliance by \u003ca href=\"https://github.com/chughtapan\"\u003e\u003ccode\u003e@​chughtapan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1246\"\u003emodelcontextprotocol/python-sdk#1246\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[auth][conformance] add conformance auth client by \u003ca href=\"https://github.com/pcarleton\"\u003e\u003ccode\u003e@​pcarleton\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1640\"\u003emodelcontextprotocol/python-sdk#1640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplement SEP-986: Tool name validation by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1655\"\u003emodelcontextprotocol/python-sdk#1655\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: url for spec by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1659\"\u003emodelcontextprotocol/python-sdk#1659\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: implement SEP-991 URL-based client ID (CIMD) support by \u003ca href=\"https://github.com/pcarleton\"\u003e\u003ccode\u003e@​pcarleton\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1652\"\u003emodelcontextprotocol/python-sdk#1652\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate doc string on custom_route by \u003ca href=\"https://github.com/pcarleton\"\u003e\u003ccode\u003e@​pcarleton\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1660\"\u003emodelcontextprotocol/python-sdk#1660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplement SEP-1036: URL mode elicitation for secure out-of-band interactions by \u003ca href=\"https://github.com/cbcoutinho\"\u003e\u003ccode\u003e@​cbcoutinho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1580\"\u003emodelcontextprotocol/python-sdk#1580\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip empty SSE data to avoid parsing errors by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1670\"\u003emodelcontextprotocol/python-sdk#1670\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSEP-1686: Tasks by \u003ca href=\"https://github.com/maxisbey\"\u003e\u003ccode\u003e@​maxisbey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1645\"\u003emodelcontextprotocol/python-sdk#1645\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd on_session_created callback option by \u003ca href=\"https://github.com/crondinini-ant\"\u003e\u003ccode\u003e@​crondinini-ant\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1710\"\u003emodelcontextprotocol/python-sdk#1710\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SSE polling support (SEP-1699) by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1654\"\u003emodelcontextprotocol/python-sdk#1654\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport client_credentials flow with JWT and Basic auth by \u003ca href=\"https://github.com/pcarleton\"\u003e\u003ccode\u003e@​pcarleton\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1663\"\u003emodelcontextprotocol/python-sdk#1663\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: backwards-compatible create_message overloads for SEP-1577 by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1713\"\u003emodelcontextprotocol/python-sdk#1713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAuto-enable DNS rebinding protection for localhost servers by \u003ca href=\"https://github.com/pcarleton\"\u003e\u003ccode\u003e@​pcarleton\u003c/code\u003e\u003c/a\u003e  (d3a184119e4479ea6a63590bc41f01dc06e3fa99)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ochafik\"\u003e\u003ccode\u003e@​ochafik\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1594\"\u003emodelcontextprotocol/python-sdk#1594\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/compare/v1.22.0...v1.23.0\"\u003ehttps://github.com/modelcontextprotocol/python-sdk/compare/v1.22.0...v1.23.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/d3a184119e4479ea6a63590bc41f01dc06e3fa99\"\u003e\u003ccode\u003ed3a1841\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/fa851d93a2036a37cce73e098f7dbc80a6c48765\"\u003e\u003ccode\u003efa851d9\u003c/code\u003e\u003c/a\u003e feat: backwards-compatible create_message overloads for SEP-1577 (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/1713\"\u003e#1713\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/f82b0c937178815c1e96460455778578050c6d1a\"\u003e\u003ccode\u003ef82b0c9\u003c/code\u003e\u003c/a\u003e Support client_credentials flow with JWT and Basic auth (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/1663\"\u003e#1663\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/281fd4765e0fc2efaf2039d248c3bc0698416a8a\"\u003e\u003ccode\u003e281fd47\u003c/code\u003e\u003c/a\u003e Add SSE polling support (SEP-1699) (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/1654\"\u003e#1654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/2cd178a962ab454e3add228ecd721784b7b36e99\"\u003e\u003ccode\u003e2cd178a\u003c/code\u003e\u003c/a\u003e Add on_session_created callback option (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/1710\"\u003e#1710\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/c92bb2f7ffaa61813d7cc350887f4ece38307769\"\u003e\u003ccode\u003ec92bb2f\u003c/code\u003e\u003c/a\u003e SEP-1686: Tasks (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/1645\"\u003e#1645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/5983a650cc07d2dc6c6ba098e99d3545889157a9\"\u003e\u003ccode\u003e5983a65\u003c/code\u003e\u003c/a\u003e Skip empty SSE data to avoid parsing errors (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/1670\"\u003e#1670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/02b78899296ce3631565345501e3d956b83ffe94\"\u003e\u003ccode\u003e02b7889\u003c/code\u003e\u003c/a\u003e Implement SEP-1036: URL mode elicitation for secure out-of-band interactions ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/27279bc157cbc03f7fe7758fd55a4b34c5652f42\"\u003e\u003ccode\u003e27279bc\u003c/code\u003e\u003c/a\u003e Update doc string on custom_route (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/1660\"\u003e#1660\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/f22501315eab5b8358c603ac7f730f77bb09e4c4\"\u003e\u003ccode\u003ef225013\u003c/code\u003e\u003c/a\u003e feat: implement SEP-991 URL-based client ID (CIMD) support (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/1652\"\u003e#1652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/compare/v1.22.0...v1.23.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `paramiko` from 3.5.0 to 5.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/paramiko/paramiko/commit/710cc5c02e2ded370d8d24e261e2baa8317a20fa\"\u003e\u003ccode\u003e710cc5c\u003c/code\u003e\u003c/a\u003e What's a few weeks between friends?\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/paramiko/paramiko/commit/ea93c5951ce1e1442be18c718c2dcc4fd8da7519\"\u003e\u003ccode\u003eea93c59\u003c/code\u003e\u003c/a\u003e Fix up Ed25519Key so it has non-erroring repr() during fatal errors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/paramiko/paramiko/commit/5b90ef9fbc774658879223e012235914d65c657b\"\u003e\u003ccode\u003e5b90ef9\u003c/code\u003e\u003c/a\u003e ruff/isort\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/paramiko/paramiko/commit/f3864b69346c853be6709f9b3f5f6a71c61e2e1a\"\u003e\u003ccode\u003ef3864b6\u003c/code\u003e\u003c/a\u003e Changelog fixes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/paramiko/paramiko/commit/acd4bc1dee5a594a3534b6d76f7dfc6ebd55f71b\"\u003e\u003ccode\u003eacd4bc1\u003c/code\u003e\u003c/a\u003e Replace hardcoded PEM format in PKey.write* with new parameter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/paramiko/paramiko/commit/6fa15569100fc222af4153f763d19620d64d9e4f\"\u003e\u003ccode\u003e6fa1556\u003c/code\u003e\u003c/a\u003e Bump group-exchange kex min_bits to 2048\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/paramiko/paramiko/commit/eb87ad3b241c08994a032c539ea8e1c51d544cea\"\u003e\u003ccode\u003eeb87ad3\u003c/code\u003e\u003c/a\u003e Fix some tests that were incorrectly passing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/paramiko/paramiko/commit/1ecc933b34510525aee8cad9956c3b8e642783ec\"\u003e\u003ccode\u003e1ecc933\u003c/code\u003e\u003c/a\u003e Remove GSSAPI support :(\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/paramiko/paramiko/commit/9bf5fcae57e6ca995275037eea9d6305f70d7cdb\"\u003e\u003ccode\u003e9bf5fca\u003c/code\u003e\u003c/a\u003e Remove SHA1-based (non-GSS) kex methods\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/paramiko/paramiko/commit/b8f75c7cd19d5c26220737c66498e5066af239b7\"\u003e\u003ccode\u003eb8f75c7\u003c/code\u003e\u003c/a\u003e Lintin' ain't easy\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/paramiko/paramiko/compare/3.5.0...5.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypdf` from 6.0.0 to 6.10.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/py-pdf/pypdf/releases\"\u003epypdf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.10.2, 2026-04-15\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDo not rely on possibly invalid /Size for incremental cloning (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3735\"\u003e#3735\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIntroduce limits for FlateDecode parameters and image decoding (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3734\"\u003e#3734\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.10.1...6.10.2\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.10.1, 2026-04-14\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit the allowed size of xref and object streams (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3733\"\u003e#3733\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eConsider strict mode setting for decryption errors (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3731\"\u003e#3731\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse new parameter names for compress_identical_objects by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.10.0...6.10.1\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.10.0, 2026-04-10\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisallow custom XML entity declarations for XMP metadata (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3724\"\u003e#3724\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSkip MD5 key derivation for AES-256 encrypted PDFs (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3694\"\u003e#3694\u003c/a\u003e) by \u003ca href=\"https://github.com/Ygnas\"\u003e\u003ccode\u003e@​Ygnas\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse remove_orphans in compress_identical_objects (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3310\"\u003e#3310\u003c/a\u003e) by \u003ca href=\"https://github.com/j-t-1\"\u003e\u003ccode\u003e@​j-t-1\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix PdfReadError when xref table contains comments before trailer (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3710\"\u003e#3710\u003c/a\u003e) by \u003ca href=\"https://github.com/rassie\"\u003e\u003ccode\u003e@​rassie\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrectly verify AES padding during decryption (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3699\"\u003e#3699\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix stale object cache from non-authoritative object streams (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3698\"\u003e#3698\u003c/a\u003e) by \u003ca href=\"https://github.com/astahlman\"\u003e\u003ccode\u003e@​astahlman\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix extract_links pairing when annotations include non-links (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3687\"\u003e#3687\u003c/a\u003e) by \u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd AI policy (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3717\"\u003e#3717\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.9.2...6.10.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.9.2, 2026-03-23\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid infinite loop in read_from_stream for broken files (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3693\"\u003e#3693\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/py-pdf/pypdf/blob/main/CHANGELOG.md\"\u003epypdf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.10.2, 2026-04-15\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDo not rely on possibly invalid /Size for incremental cloning (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3735\"\u003e#3735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce limits for FlateDecode parameters and image decoding (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3734\"\u003e#3734\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.10.1...6.10.2\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.10.1, 2026-04-14\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit the allowed size of xref and object streams (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3733\"\u003e#3733\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eConsider strict mode setting for decryption errors (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3731\"\u003e#3731\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse new parameter names for compress_identical_objects\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.10.0...6.10.1\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.10.0, 2026-04-10\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisallow custom XML entity declarations for XMP metadata (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3724\"\u003e#3724\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSkip MD5 key derivation for AES-256 encrypted PDFs (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3694\"\u003e#3694\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse remove_orphans in compress_identical_objects (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3310\"\u003e#3310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix PdfReadError when xref table contains comments before trailer (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3710\"\u003e#3710\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCorrectly verify AES padding during decryption (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3699\"\u003e#3699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix stale object cache from non-authoritative object streams (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3698\"\u003e#3698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix extract_links pairing when annotations include non-links (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3687\"\u003e#3687\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd AI policy (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3717\"\u003e#3717\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.9.2...6.10.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.9.2, 2026-03-23\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid infinite loop in read_from_stream for broken files (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3693\"\u003e#3693\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolve UnboundLocalError for xobjs in _get_image (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3684\"\u003e#3684\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.9.1...6.9.2\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/c476b4f293c8ef4cac07dfb755e5582d838fcdc0\"\u003e\u003ccode\u003ec476b4f\u003c/code\u003e\u003c/a\u003e REL: 6.10.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/c50a0104cf083356f7c7f5d61410466a57f5c88a\"\u003e\u003ccode\u003ec50a010\u003c/cod...\n\n_Description has been truncated_","html_url":"https://github.com/adrianwedd/agent-zero/pull/1","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrianwedd%2Fagent-zero/issues/1","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1/packages"}},{"old_version":"\u003c4.0,\u003e=3.0","new_version":"\u003e=3.2.4,\u003c4.0","update_type":"minor","path":"/pipeline","pr_created_at":"2026-05-14T21:28:17.000Z","version_change":"\u003c4.0,\u003e=3.0 → \u003e=3.2.4,\u003c4.0","issue":{"uuid":"4449419164","node_id":"PR_kwDOQn0M3s7bsGBN","number":954,"state":"closed","title":"build(deps): update fastmcp requirement from \u003c4.0,\u003e=3.0 to \u003e=3.2.4,\u003c4.0 in /pipeline","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-21T21:28:51.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-14T21:28:17.000Z","updated_at":"2026-05-21T21:28:53.000Z","time_to_close":604834,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): update","packages":[{"name":"fastmcp","old_version":"\u003c4.0,\u003e=3.0","new_version":"\u003e=3.2.4,\u003c4.0","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":"/pipeline","ecosystem":"pip"},"body":"Updates the requirements on [fastmcp](https://github.com/PrefectHQ/fastmcp) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.4: Patch Me If You Can\u003c/h2\u003e\n\u003cp\u003eA grab bag of fixes, hardening, and polish.\u003c/p\u003e\n\u003cp\u003eThe headline behavior change: background tasks are now scoped to the authorization context rather than the MCP session, so a task kicked off by an authenticated user survives session churn and stays tied to who started it. This is a breaking change for anyone relying on the old session-scoped semantics.\u003c/p\u003e\n\u003cp\u003eSecurity got three meaningful upgrades. \u003ccode\u003eFileUpload\u003c/code\u003e now validates actual decoded base64 size instead of trusting the client-reported number, so an attacker can't claim \u0026quot;10 bytes\u0026quot; and deliver 10MB. The proxy client stops forwarding inbound HTTP headers to unrelated remote servers — previously a header meant for server A could leak to server B. And AuthKit now auto-binds token audience to the resource URL per RFC 8707, closing a token-reuse gap across MCP resources.\u003c/p\u003e\n\u003cp\u003eSchema handling had a rough-edges pass. \u003ccode\u003ejson_schema_to_type\u003c/code\u003e no longer crashes on Python keywords, boolean schemas, empty enums, or name collisions, and we added a 232K-schema crash test from APIs.guru to keep it honest. Gemini 2.5 Flash compatibility is fixed by stripping \u003ccode\u003etitle\u003c/code\u003e fields the model rejects. Parameter descriptions are now extracted from docstrings automatically, so your tool signatures document themselves.\u003c/p\u003e\n\u003cp\u003ePlus a Keycloak OAuth provider for enterprise auth, improvements to \u003ccode\u003ectx.elicit()\u003c/code\u003e (new \u003ccode\u003eresponse_title\u003c/code\u003e/\u003ccode\u003eresponse_description\u003c/code\u003e, deprecation warning when called without \u003ccode\u003eresponse_type\u003c/code\u003e), and dozens of smaller fixes across transforms, retry middleware, resource templates, and client disconnect handling.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes ⚠️\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eScope tasks to authorization context, not session by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3800\"\u003ePrefectHQ/fastmcp#3800\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump pydocket\u0026gt;=0.19.0, drop fakeredis pin by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3822\"\u003ePrefectHQ/fastmcp#3822\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd real-world schema crash test (232K schemas from APIs.guru) by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3826\"\u003ePrefectHQ/fastmcp#3826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable 7 zero-violation ruff rules by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3841\"\u003ePrefectHQ/fastmcp#3841\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePromote 7 ty rules from ignore to warn by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3852\"\u003ePrefectHQ/fastmcp#3852\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace ___ with hash-based backend tool routing and per-tool prefab resources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3824\"\u003ePrefectHQ/fastmcp#3824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable 4 ruff rules (DTZ, ERA, ISC, INP) and fix 9 violations by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3842\"\u003ePrefectHQ/fastmcp#3842\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract parameter descriptions from docstrings by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3872\"\u003ePrefectHQ/fastmcp#3872\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: speed up schema crash test (CSafeLoader + xdist-safe aggregation) by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3873\"\u003ePrefectHQ/fastmcp#3873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest: bump OpenAPI init perf threshold to 200ms for Windows CI by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3879\"\u003ePrefectHQ/fastmcp#3879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: unify object-schema conversion through _object_schema_to_type by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3884\"\u003ePrefectHQ/fastmcp#3884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Keycloak OAuth Provider for Enterprise Authentication and local dev by \u003ca href=\"https://github.com/stephaneberle9\"\u003e\u003ccode\u003e@​stephaneberle9\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1937\"\u003ePrefectHQ/fastmcp#1937\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow auth providers to override protected resource base URLs by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3900\"\u003ePrefectHQ/fastmcp#3900\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable PERF and T20 ruff rules by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3845\"\u003ePrefectHQ/fastmcp#3845\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd response_title and response_description to ctx.elicit() by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3912\"\u003ePrefectHQ/fastmcp#3912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeprecate ctx.elicit() without response_type by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3916\"\u003ePrefectHQ/fastmcp#3916\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity 🔒\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValidate actual base64 data size in FileUpload, not client-reported size by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3816\"\u003ePrefectHQ/fastmcp#3816\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop forwarding inbound HTTP headers to unrelated remote servers by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3837\"\u003ePrefectHQ/fastmcp#3837\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAuthKit: auto-bind token audience to resource URL (RFC 8707) by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3905\"\u003ePrefectHQ/fastmcp#3905\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eVersion-check is_docket_available() to avoid transitive pydocket crash by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3807\"\u003ePrefectHQ/fastmcp#3807\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: materialize generators before result conversion, handle bytes gracefully by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3830\"\u003ePrefectHQ/fastmcp#3830\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix json_schema_to_type crashes on keywords, boolean schemas, empty enums, and name collisions by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3818\"\u003ePrefectHQ/fastmcp#3818\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: replace \u003ccode\u003eor\u003c/code\u003e with \u003ccode\u003eis not None\u003c/code\u003e checks for config/override merging by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3833\"\u003ePrefectHQ/fastmcp#3833\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: TransformedTool sync fn crash and schema mutation by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3823\"\u003ePrefectHQ/fastmcp#3823\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: cross-provider duplicate detection, error visibility, mask propagation by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3827\"\u003ePrefectHQ/fastmcp#3827\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: don't pass HTTP kwargs when transport is unspecified by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3838\"\u003ePrefectHQ/fastmcp#3838\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: strip title fields from tool schemas for Gemini 2.5 Flash compatibility by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3861\"\u003ePrefectHQ/fastmcp#3861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: retry when LLM returns text instead of calling final_response by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3850\"\u003ePrefectHQ/fastmcp#3850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise on unhandled content types in sampling handler dispatch chains by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3857\"\u003ePrefectHQ/fastmcp#3857\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken code examples in docs by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3869\"\u003ePrefectHQ/fastmcp#3869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: GoogleGenaiSamplingHandler leaks thought parts and gives unhelpful errors on empty responses by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3849\"\u003ePrefectHQ/fastmcp#3849\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/blob/main/docs/changelog.mdx\"\u003efastmcp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003chr /\u003e\n\u003ch2\u003etitle: \u0026quot;Changelog\u0026quot;\nicon: \u0026quot;list-check\u0026quot;\nrss: true\ntag: NEW\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.1\"\u003ev3.1.1: 'Tis But a Patch\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ePins \u003ccode\u003epydantic-monty\u003c/code\u003e below 0.0.8 to fix a breaking change in Monty that affects code mode. Monty 0.0.8 removed the \u003ccode\u003eexternal_functions\u003c/code\u003e constructor parameter, causing \u003ccode\u003eMontySandboxProvider\u003c/code\u003e to fail. This patch caps the version so existing installs work correctly.\u003c/p\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePin pydantic-monty below 0.0.8 to fix code mode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3497\"\u003e#3497\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.1.0...v3.1.1\"\u003ev3.1.0...v3.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.0\"\u003ev3.1.0: Code to Joy\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFastMCP 3.1 is the Code Mode release. The 3.0 architecture introduced providers and transforms as the extensibility layer — 3.1 puts that architecture to work, shipping the most requested capability since launch: servers that can find and execute code on behalf of agents, without requiring clients to know what tools exist.\u003c/p\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Search transforms for tool discovery by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3154\"\u003e#3154\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd experimental CodeMode transform by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3297\"\u003e#3297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Prefab Apps integration for MCP tool UIs by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3316\"\u003e#3316\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLazy-load heavy imports to reduce import time by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3295\"\u003e#3295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd http_client parameter to all token verifiers for connection pooling by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3300\"\u003e#3300\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd in-memory caching for token introspection results by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3298\"\u003e#3298\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SessionStart hook to install gh CLI in cloud sessions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3308\"\u003e#3308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty 0.0.19 type errors by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3310\"\u003e#3310\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCode Mode: Add resource limits to MontySandboxProvider by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3326\"\u003e#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept transforms as FastMCP init kwarg by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3324\"\u003e#3324\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSplit large test files to comply with loq line limit by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd -m/--module flag to \u003ccode\u003efastmcp run\u003c/code\u003e and \u003ccode\u003edev inspector\u003c/code\u003e by \u003ca href=\"https://github.com/dgenio\"\u003e\u003ccode\u003e@​dgenio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3331\"\u003e#3331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd search_result_serializer hook and serialize_tools_for_output_markdown by \u003ca href=\"https://github.com/MagnusS0\"\u003e\u003ccode\u003e@​MagnusS0\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3337\"\u003e#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd MultiAuth for composing multiple token verification sources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3335\"\u003e#3335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdds PropelAuth as an AuthProvider by \u003ca href=\"https://github.com/andrew-propelauth\"\u003e\u003ccode\u003e@​andrew-propelauth\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3358\"\u003e#3358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace vendored DI with uncalled-for by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3301\"\u003e#3301\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecompose CodeMode into composable discovery tools by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3354\"\u003e#3354\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(contrib): auto-sync MCPMixin decorators with from_function signatures by \u003ca href=\"https://github.com/AnkeshThakur\"\u003e\u003ccode\u003e@​AnkeshThakur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3323\"\u003e#3323\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Google GenAI Sampling Handler by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/2977\"\u003e#2977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ListTools, search limit, and catalog size annotation to CodeMode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3359\"\u003e#3359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow configuring FastMCP transport setting in the same way as other configuration by \u003ca href=\"https://github.com/jvdmr\"\u003e\u003ccode\u003e@​jvdmr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1796\"\u003e#1796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd include_unversioned option to VersionFilter by \u003ca href=\"https://github.com/yangbaechu\"\u003e\u003ccode\u003e@​yangbaechu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3349\"\u003e#3349\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/7d7607473d7713d9937cbbbe0bfc635976c511d3\"\u003e\u003ccode\u003e7d76074\u003c/code\u003e\u003c/a\u003e Stop pydantic 2.13 from leaking _WrappedResult docstring into tool output sch...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/b732a4a516e4a41f053e46dbd86e9520cf5178bf\"\u003e\u003ccode\u003eb732a4a\u003c/code\u003e\u003c/a\u003e Overhaul apps docs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3915\"\u003e#3915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/5c2ff1bd7b9844a3891149741de56a5e4d24621d\"\u003e\u003ccode\u003e5c2ff1b\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3914\"\u003e#3914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/f4f2ec07fbb611a25ce27e1b4f9b67f54bc2420a\"\u003e\u003ccode\u003ef4f2ec0\u003c/code\u003e\u003c/a\u003e Deprecate ctx.elicit() without response_type (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3916\"\u003e#3916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/338b80c3ae3b8c5ac3a7e094178c9f34eb286ea8\"\u003e\u003ccode\u003e338b80c\u003c/code\u003e\u003c/a\u003e chore(deps): bump the uv group across 2 directories with 1 update (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3913\"\u003e#3913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/110cd3adcb7a433923ed8ed4a8b23d076a313ab5\"\u003e\u003ccode\u003e110cd3a\u003c/code\u003e\u003c/a\u003e Add response_title and response_description to ctx.elicit() (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3912\"\u003e#3912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/311784617639d7b46490d863f2e4bb24be6361c5\"\u003e\u003ccode\u003e3117846\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3909\"\u003e#3909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/031c7e03b48330345bc4d1f82a9cc78ed269b07c\"\u003e\u003ccode\u003e031c7e0\u003c/code\u003e\u003c/a\u003e Fix RetryMiddleware not retrying tool errors (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3858\"\u003e#3858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/200d79e7d28f36b36c271621d9550aa3fb3c0aa7\"\u003e\u003ccode\u003e200d79e\u003c/code\u003e\u003c/a\u003e Enable PERF and T20 ruff rules (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3845\"\u003e#3845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/82f310fe61dba25de34f2be3e203555ccfc4181d\"\u003e\u003ccode\u003e82f310f\u003c/code\u003e\u003c/a\u003e AuthKit: auto-bind token audience to resource URL (RFC 8707) (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3905\"\u003e#3905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.0.0...v3.2.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/cap-alpha/cap-alpha-protocol/pull/954","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/cap-alpha%2Fcap-alpha-protocol/issues/954","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/954/packages"}},{"old_version":"2.14.2","new_version":"3.2.3","update_type":"major","path":"/mcp","pr_created_at":"2026-05-14T00:32:34.000Z","version_change":"2.14.2 → 3.2.3","issue":{"uuid":"4442111726","node_id":"PR_kwDOQMPGcs7bVLZ4","number":1036,"state":"closed","title":"chore: bump fastmcp from 2.14.2 to 3.2.3 in /mcp","user":"dependabot[bot]","labels":["dependencies"],"assignees":["KaliszS"],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-21T01:43:31.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-14T00:32:34.000Z","updated_at":"2026-05-21T01:43:33.000Z","time_to_close":609057,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore","packages":[{"name":"fastmcp","old_version":"2.14.2","new_version":"3.2.3","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":"/mcp","ecosystem":"pip"},"body":"Bumps [fastmcp](https://github.com/PrefectHQ/fastmcp) from 2.14.2 to 3.2.3.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.3: Redis or Not\u003c/h2\u003e\n\u003cp\u003efakeredis 2.35.0 shipped an undocumented rename (\u003ccode\u003eFakeConnection\u003c/code\u003e → \u003ccode\u003eFakeAsyncRedisConnection\u003c/code\u003e) that broke pydocket's \u003ccode\u003ememory://\u003c/code\u003e backend, causing \u003ccode\u003efastmcp[tasks]\u003c/code\u003e installs to fail at startup with an \u003ccode\u003eImportError\u003c/code\u003e. This pins \u003ccode\u003efakeredis\u0026lt;2.35.0\u003c/code\u003e in the \u003ccode\u003etasks\u003c/code\u003e extra as a stopgap until a fixed pydocket ships.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePin fakeredis\u0026lt;2.35.0 in tasks extra by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3804\"\u003ePrefectHQ/fastmcp#3804\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument session state isolation across mount boundaries by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3801\"\u003ePrefectHQ/fastmcp#3801\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.2.2...v3.2.3\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.2.2...v3.2.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.2.2: Audience Appreciation\u003c/h2\u003e\n\u003cp\u003eThe Azure audience fix in 3.2.1 overcorrected: it switched token validation from \u003ccode\u003eclient_id\u003c/code\u003e to \u003ccode\u003eidentifier_uri\u003c/code\u003e, which fixed custom Application ID URIs but broke the default case where Azure AD v2 tokens set \u003ccode\u003eaud\u003c/code\u003e to the bare client ID GUID. Both formats are now accepted.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: accept both client_id and identifier_uri as Azure audience by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3797\"\u003ePrefectHQ/fastmcp#3797\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependencies 📦\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 2 directories with 1 update by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3795\"\u003ePrefectHQ/fastmcp#3795\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.2.1...v3.2.2\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.2.1...v3.2.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.2.1: Audience Participation\u003c/h2\u003e\n\u003cp\u003eMost of the fixes in this patch are about auth providers getting audience validation wrong. Cognito token verification was checking the \u003ccode\u003eaud\u003c/code\u003e JWT claim, but Cognito access tokens don't include one; they use \u003ccode\u003eclient_id\u003c/code\u003e instead. Azure was hardcoding the raw client ID as the expected audience, ignoring the \u003ccode\u003eidentifier_uri\u003c/code\u003e parameter even though Entra v2.0 tokens use the Application ID URI as \u003ccode\u003eaud\u003c/code\u003e. Both now validate correctly without changing the provider API. Consent cookies also had an unbounded growth problem in high-DCR-client environments, eventually blowing past reverse proxy header limits; they're now capped as an LRU.\u003c/p\u003e\n\u003cp\u003eOn the OpenAPI side, \u003ccode\u003enullable: true\u003c/code\u003e fields from 3.0 specs were leaking into tool input schemas as-is instead of being converted to JSON Schema's \u003ccode\u003etype: [\u0026quot;string\u0026quot;, \u0026quot;null\u0026quot;]\u003c/code\u003e. Server variable templates in base URLs (like \u003ccode\u003ehttps://{region}.api.example.com\u003c/code\u003e) were also being passed through raw instead of substituted with their defaults.\u003c/p\u003e\n\u003cp\u003eSmaller fixes: form submissions from Prefab UI now correctly handle unchecked boolean checkboxes, the client no longer crashes on error responses with empty or non-text content from third-party servers, and \u003ccode\u003easyncio.iscoroutinefunction\u003c/code\u003e no longer emits deprecation warnings on Python 3.14.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes ⚠️\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(google): use sub (user ID) for client_id instead of aud (app ID) by \u003ca href=\"https://github.com/shigechika\"\u003e\u003ccode\u003e@​shigechika\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3722\"\u003ePrefectHQ/fastmcp#3722\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: remove CSP from tool metadata, keep on resource only by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3754\"\u003ePrefectHQ/fastmcp#3754\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[codex] Add FastMCP docs telemetry by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3727\"\u003ePrefectHQ/fastmcp#3727\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: split SDK navigation into standalone $ref file by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3773\"\u003ePrefectHQ/fastmcp#3773\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: bump ty to \u0026gt;=0.0.29 and suppress new false positives by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3790\"\u003ePrefectHQ/fastmcp#3790\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: use explicit None checks for JWT exp validation by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3724\"\u003ePrefectHQ/fastmcp#3724\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/blob/main/docs/changelog.mdx\"\u003efastmcp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003chr /\u003e\n\u003ch2\u003etitle: \u0026quot;Changelog\u0026quot;\nicon: \u0026quot;list-check\u0026quot;\nrss: true\ntag: NEW\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.1\"\u003ev3.1.1: 'Tis But a Patch\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ePins \u003ccode\u003epydantic-monty\u003c/code\u003e below 0.0.8 to fix a breaking change in Monty that affects code mode. Monty 0.0.8 removed the \u003ccode\u003eexternal_functions\u003c/code\u003e constructor parameter, causing \u003ccode\u003eMontySandboxProvider\u003c/code\u003e to fail. This patch caps the version so existing installs work correctly.\u003c/p\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePin pydantic-monty below 0.0.8 to fix code mode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3497\"\u003e#3497\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.1.0...v3.1.1\"\u003ev3.1.0...v3.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.0\"\u003ev3.1.0: Code to Joy\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFastMCP 3.1 is the Code Mode release. The 3.0 architecture introduced providers and transforms as the extensibility layer — 3.1 puts that architecture to work, shipping the most requested capability since launch: servers that can find and execute code on behalf of agents, without requiring clients to know what tools exist.\u003c/p\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Search transforms for tool discovery by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3154\"\u003e#3154\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd experimental CodeMode transform by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3297\"\u003e#3297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Prefab Apps integration for MCP tool UIs by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3316\"\u003e#3316\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLazy-load heavy imports to reduce import time by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3295\"\u003e#3295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd http_client parameter to all token verifiers for connection pooling by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3300\"\u003e#3300\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd in-memory caching for token introspection results by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3298\"\u003e#3298\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SessionStart hook to install gh CLI in cloud sessions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3308\"\u003e#3308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty 0.0.19 type errors by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3310\"\u003e#3310\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCode Mode: Add resource limits to MontySandboxProvider by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3326\"\u003e#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept transforms as FastMCP init kwarg by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3324\"\u003e#3324\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSplit large test files to comply with loq line limit by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd -m/--module flag to \u003ccode\u003efastmcp run\u003c/code\u003e and \u003ccode\u003edev inspector\u003c/code\u003e by \u003ca href=\"https://github.com/dgenio\"\u003e\u003ccode\u003e@​dgenio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3331\"\u003e#3331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd search_result_serializer hook and serialize_tools_for_output_markdown by \u003ca href=\"https://github.com/MagnusS0\"\u003e\u003ccode\u003e@​MagnusS0\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3337\"\u003e#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd MultiAuth for composing multiple token verification sources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3335\"\u003e#3335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdds PropelAuth as an AuthProvider by \u003ca href=\"https://github.com/andrew-propelauth\"\u003e\u003ccode\u003e@​andrew-propelauth\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3358\"\u003e#3358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace vendored DI with uncalled-for by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3301\"\u003e#3301\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecompose CodeMode into composable discovery tools by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3354\"\u003e#3354\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(contrib): auto-sync MCPMixin decorators with from_function signatures by \u003ca href=\"https://github.com/AnkeshThakur\"\u003e\u003ccode\u003e@​AnkeshThakur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3323\"\u003e#3323\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Google GenAI Sampling Handler by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/2977\"\u003e#2977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ListTools, search limit, and catalog size annotation to CodeMode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3359\"\u003e#3359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow configuring FastMCP transport setting in the same way as other configuration by \u003ca href=\"https://github.com/jvdmr\"\u003e\u003ccode\u003e@​jvdmr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1796\"\u003e#1796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd include_unversioned option to VersionFilter by \u003ca href=\"https://github.com/yangbaechu\"\u003e\u003ccode\u003e@​yangbaechu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3349\"\u003e#3349\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/d1adb041eab26ee2d4b837c0a13bebe9af7f6fc7\"\u003e\u003ccode\u003ed1adb04\u003c/code\u003e\u003c/a\u003e Pin fakeredis\u0026lt;2.35.0 in tasks extra (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3804\"\u003e#3804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/0194c6e8ea905b1799cafe2d063dae1e461acf5f\"\u003e\u003ccode\u003e0194c6e\u003c/code\u003e\u003c/a\u003e Document session state isolation across mount boundaries (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3801\"\u003e#3801\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/6592aaa70e979aab0112165ed922ce92f03adaf8\"\u003e\u003ccode\u003e6592aaa\u003c/code\u003e\u003c/a\u003e fix: accept both client_id and identifier_uri as Azure audience (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3797\"\u003e#3797\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/9f0d8d3d125cce605227913baa62f34468361e71\"\u003e\u003ccode\u003e9f0d8d3\u003c/code\u003e\u003c/a\u003e chore(deps): bump the uv group across 2 directories with 1 update (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3795\"\u003e#3795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/556fd8fa42707774ce92899ba2049d8012035953\"\u003e\u003ccode\u003e556fd8f\u003c/code\u003e\u003c/a\u003e Harden client tool result error handling (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3778\"\u003e#3778\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/e064ba69de0d454416dc000fd7fa2c95efe00709\"\u003e\u003ccode\u003ee064ba6\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3791\"\u003e#3791\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/a3c5cc12d3daf7d65f824f2b8a7c553b96b98243\"\u003e\u003ccode\u003ea3c5cc1\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3757\"\u003e#3757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/f5be772403011c8518b78789a26eeab714d7fcee\"\u003e\u003ccode\u003ef5be772\u003c/code\u003e\u003c/a\u003e fix: bump ty to \u0026gt;=0.0.29 and suppress new false positives (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3790\"\u003e#3790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/f14456d63af321f6c30e034a89ea441385970c80\"\u003e\u003ccode\u003ef14456d\u003c/code\u003e\u003c/a\u003e docs: document forward_resource parameter on OAuthProxy (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3788\"\u003e#3788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/2b9d3eee0f93931deb031f424bef193e98f27204\"\u003e\u003ccode\u003e2b9d3ee\u003c/code\u003e\u003c/a\u003e fix: use identifier_uri as audience for Azure token validation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3787\"\u003e#3787\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v2.14.2...v3.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=fastmcp\u0026package-manager=uv\u0026previous-version=2.14.2\u0026new-version=3.2.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/the-momentum/open-wearables/pull/1036","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/the-momentum%2Fopen-wearables/issues/1036","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1036/packages"}},{"old_version":"2.14.0","new_version":"3.2.4","update_type":"major","path":null,"pr_created_at":"2026-05-12T01:00:24.000Z","version_change":"2.14.0 → 3.2.4","issue":{"uuid":"4425374585","node_id":"PR_kwDOENP6UM7aeu96","number":339,"state":"closed","title":"Bump fastmcp from 2.14.0 to 3.2.4","user":"dependabot[bot]","labels":["CherryPick","6.15.z"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-05-25T23:41:59.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-12T01:00:24.000Z","updated_at":"2026-05-25T23:42:01.000Z","time_to_close":1204895,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"fastmcp","old_version":"2.14.0","new_version":"3.2.4","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":null,"ecosystem":"pip"},"body":"Bumps [fastmcp](https://github.com/PrefectHQ/fastmcp) from 2.14.0 to 3.2.4.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.4: Patch Me If You Can\u003c/h2\u003e\n\u003cp\u003eA grab bag of fixes, hardening, and polish.\u003c/p\u003e\n\u003cp\u003eThe headline behavior change: background tasks are now scoped to the authorization context rather than the MCP session, so a task kicked off by an authenticated user survives session churn and stays tied to who started it. This is a breaking change for anyone relying on the old session-scoped semantics.\u003c/p\u003e\n\u003cp\u003eSecurity got three meaningful upgrades. \u003ccode\u003eFileUpload\u003c/code\u003e now validates actual decoded base64 size instead of trusting the client-reported number, so an attacker can't claim \u0026quot;10 bytes\u0026quot; and deliver 10MB. The proxy client stops forwarding inbound HTTP headers to unrelated remote servers — previously a header meant for server A could leak to server B. And AuthKit now auto-binds token audience to the resource URL per RFC 8707, closing a token-reuse gap across MCP resources.\u003c/p\u003e\n\u003cp\u003eSchema handling had a rough-edges pass. \u003ccode\u003ejson_schema_to_type\u003c/code\u003e no longer crashes on Python keywords, boolean schemas, empty enums, or name collisions, and we added a 232K-schema crash test from APIs.guru to keep it honest. Gemini 2.5 Flash compatibility is fixed by stripping \u003ccode\u003etitle\u003c/code\u003e fields the model rejects. Parameter descriptions are now extracted from docstrings automatically, so your tool signatures document themselves.\u003c/p\u003e\n\u003cp\u003ePlus a Keycloak OAuth provider for enterprise auth, improvements to \u003ccode\u003ectx.elicit()\u003c/code\u003e (new \u003ccode\u003eresponse_title\u003c/code\u003e/\u003ccode\u003eresponse_description\u003c/code\u003e, deprecation warning when called without \u003ccode\u003eresponse_type\u003c/code\u003e), and dozens of smaller fixes across transforms, retry middleware, resource templates, and client disconnect handling.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes ⚠️\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eScope tasks to authorization context, not session by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3800\"\u003ePrefectHQ/fastmcp#3800\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump pydocket\u0026gt;=0.19.0, drop fakeredis pin by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3822\"\u003ePrefectHQ/fastmcp#3822\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd real-world schema crash test (232K schemas from APIs.guru) by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3826\"\u003ePrefectHQ/fastmcp#3826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable 7 zero-violation ruff rules by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3841\"\u003ePrefectHQ/fastmcp#3841\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePromote 7 ty rules from ignore to warn by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3852\"\u003ePrefectHQ/fastmcp#3852\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace ___ with hash-based backend tool routing and per-tool prefab resources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3824\"\u003ePrefectHQ/fastmcp#3824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable 4 ruff rules (DTZ, ERA, ISC, INP) and fix 9 violations by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3842\"\u003ePrefectHQ/fastmcp#3842\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract parameter descriptions from docstrings by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3872\"\u003ePrefectHQ/fastmcp#3872\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: speed up schema crash test (CSafeLoader + xdist-safe aggregation) by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3873\"\u003ePrefectHQ/fastmcp#3873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest: bump OpenAPI init perf threshold to 200ms for Windows CI by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3879\"\u003ePrefectHQ/fastmcp#3879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: unify object-schema conversion through _object_schema_to_type by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3884\"\u003ePrefectHQ/fastmcp#3884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Keycloak OAuth Provider for Enterprise Authentication and local dev by \u003ca href=\"https://github.com/stephaneberle9\"\u003e\u003ccode\u003e@​stephaneberle9\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1937\"\u003ePrefectHQ/fastmcp#1937\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow auth providers to override protected resource base URLs by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3900\"\u003ePrefectHQ/fastmcp#3900\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable PERF and T20 ruff rules by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3845\"\u003ePrefectHQ/fastmcp#3845\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd response_title and response_description to ctx.elicit() by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3912\"\u003ePrefectHQ/fastmcp#3912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeprecate ctx.elicit() without response_type by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3916\"\u003ePrefectHQ/fastmcp#3916\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity 🔒\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValidate actual base64 data size in FileUpload, not client-reported size by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3816\"\u003ePrefectHQ/fastmcp#3816\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop forwarding inbound HTTP headers to unrelated remote servers by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3837\"\u003ePrefectHQ/fastmcp#3837\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAuthKit: auto-bind token audience to resource URL (RFC 8707) by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3905\"\u003ePrefectHQ/fastmcp#3905\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eVersion-check is_docket_available() to avoid transitive pydocket crash by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3807\"\u003ePrefectHQ/fastmcp#3807\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: materialize generators before result conversion, handle bytes gracefully by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3830\"\u003ePrefectHQ/fastmcp#3830\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix json_schema_to_type crashes on keywords, boolean schemas, empty enums, and name collisions by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3818\"\u003ePrefectHQ/fastmcp#3818\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: replace \u003ccode\u003eor\u003c/code\u003e with \u003ccode\u003eis not None\u003c/code\u003e checks for config/override merging by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3833\"\u003ePrefectHQ/fastmcp#3833\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: TransformedTool sync fn crash and schema mutation by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3823\"\u003ePrefectHQ/fastmcp#3823\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: cross-provider duplicate detection, error visibility, mask propagation by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3827\"\u003ePrefectHQ/fastmcp#3827\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: don't pass HTTP kwargs when transport is unspecified by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3838\"\u003ePrefectHQ/fastmcp#3838\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: strip title fields from tool schemas for Gemini 2.5 Flash compatibility by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3861\"\u003ePrefectHQ/fastmcp#3861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: retry when LLM returns text instead of calling final_response by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3850\"\u003ePrefectHQ/fastmcp#3850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise on unhandled content types in sampling handler dispatch chains by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3857\"\u003ePrefectHQ/fastmcp#3857\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken code examples in docs by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3869\"\u003ePrefectHQ/fastmcp#3869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: GoogleGenaiSamplingHandler leaks thought parts and gives unhelpful errors on empty responses by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3849\"\u003ePrefectHQ/fastmcp#3849\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/blob/main/docs/changelog.mdx\"\u003efastmcp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003chr /\u003e\n\u003ch2\u003etitle: \u0026quot;Changelog\u0026quot;\nicon: \u0026quot;list-check\u0026quot;\nrss: true\ntag: NEW\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.1\"\u003ev3.1.1: 'Tis But a Patch\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ePins \u003ccode\u003epydantic-monty\u003c/code\u003e below 0.0.8 to fix a breaking change in Monty that affects code mode. Monty 0.0.8 removed the \u003ccode\u003eexternal_functions\u003c/code\u003e constructor parameter, causing \u003ccode\u003eMontySandboxProvider\u003c/code\u003e to fail. This patch caps the version so existing installs work correctly.\u003c/p\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePin pydantic-monty below 0.0.8 to fix code mode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3497\"\u003e#3497\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.1.0...v3.1.1\"\u003ev3.1.0...v3.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.0\"\u003ev3.1.0: Code to Joy\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFastMCP 3.1 is the Code Mode release. The 3.0 architecture introduced providers and transforms as the extensibility layer — 3.1 puts that architecture to work, shipping the most requested capability since launch: servers that can find and execute code on behalf of agents, without requiring clients to know what tools exist.\u003c/p\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Search transforms for tool discovery by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3154\"\u003e#3154\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd experimental CodeMode transform by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3297\"\u003e#3297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Prefab Apps integration for MCP tool UIs by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3316\"\u003e#3316\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLazy-load heavy imports to reduce import time by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3295\"\u003e#3295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd http_client parameter to all token verifiers for connection pooling by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3300\"\u003e#3300\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd in-memory caching for token introspection results by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3298\"\u003e#3298\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SessionStart hook to install gh CLI in cloud sessions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3308\"\u003e#3308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty 0.0.19 type errors by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3310\"\u003e#3310\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCode Mode: Add resource limits to MontySandboxProvider by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3326\"\u003e#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept transforms as FastMCP init kwarg by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3324\"\u003e#3324\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSplit large test files to comply with loq line limit by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd -m/--module flag to \u003ccode\u003efastmcp run\u003c/code\u003e and \u003ccode\u003edev inspector\u003c/code\u003e by \u003ca href=\"https://github.com/dgenio\"\u003e\u003ccode\u003e@​dgenio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3331\"\u003e#3331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd search_result_serializer hook and serialize_tools_for_output_markdown by \u003ca href=\"https://github.com/MagnusS0\"\u003e\u003ccode\u003e@​MagnusS0\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3337\"\u003e#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd MultiAuth for composing multiple token verification sources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3335\"\u003e#3335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdds PropelAuth as an AuthProvider by \u003ca href=\"https://github.com/andrew-propelauth\"\u003e\u003ccode\u003e@​andrew-propelauth\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3358\"\u003e#3358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace vendored DI with uncalled-for by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3301\"\u003e#3301\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecompose CodeMode into composable discovery tools by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3354\"\u003e#3354\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(contrib): auto-sync MCPMixin decorators with from_function signatures by \u003ca href=\"https://github.com/AnkeshThakur\"\u003e\u003ccode\u003e@​AnkeshThakur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3323\"\u003e#3323\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Google GenAI Sampling Handler by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/2977\"\u003e#2977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ListTools, search limit, and catalog size annotation to CodeMode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3359\"\u003e#3359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow configuring FastMCP transport setting in the same way as other configuration by \u003ca href=\"https://github.com/jvdmr\"\u003e\u003ccode\u003e@​jvdmr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1796\"\u003e#1796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd include_unversioned option to VersionFilter by \u003ca href=\"https://github.com/yangbaechu\"\u003e\u003ccode\u003e@​yangbaechu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3349\"\u003e#3349\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/7d7607473d7713d9937cbbbe0bfc635976c511d3\"\u003e\u003ccode\u003e7d76074\u003c/code\u003e\u003c/a\u003e Stop pydantic 2.13 from leaking _WrappedResult docstring into tool output sch...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/b732a4a516e4a41f053e46dbd86e9520cf5178bf\"\u003e\u003ccode\u003eb732a4a\u003c/code\u003e\u003c/a\u003e Overhaul apps docs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3915\"\u003e#3915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/5c2ff1bd7b9844a3891149741de56a5e4d24621d\"\u003e\u003ccode\u003e5c2ff1b\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3914\"\u003e#3914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/f4f2ec07fbb611a25ce27e1b4f9b67f54bc2420a\"\u003e\u003ccode\u003ef4f2ec0\u003c/code\u003e\u003c/a\u003e Deprecate ctx.elicit() without response_type (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3916\"\u003e#3916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/338b80c3ae3b8c5ac3a7e094178c9f34eb286ea8\"\u003e\u003ccode\u003e338b80c\u003c/code\u003e\u003c/a\u003e chore(deps): bump the uv group across 2 directories with 1 update (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3913\"\u003e#3913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/110cd3adcb7a433923ed8ed4a8b23d076a313ab5\"\u003e\u003ccode\u003e110cd3a\u003c/code\u003e\u003c/a\u003e Add response_title and response_description to ctx.elicit() (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3912\"\u003e#3912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/311784617639d7b46490d863f2e4bb24be6361c5\"\u003e\u003ccode\u003e3117846\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3909\"\u003e#3909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/031c7e03b48330345bc4d1f82a9cc78ed269b07c\"\u003e\u003ccode\u003e031c7e0\u003c/code\u003e\u003c/a\u003e Fix RetryMiddleware not retrying tool errors (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3858\"\u003e#3858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/200d79e7d28f36b36c271621d9550aa3fb3c0aa7\"\u003e\u003ccode\u003e200d79e\u003c/code\u003e\u003c/a\u003e Enable PERF and T20 ruff rules (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3845\"\u003e#3845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/82f310fe61dba25de34f2be3e203555ccfc4181d\"\u003e\u003ccode\u003e82f310f\u003c/code\u003e\u003c/a\u003e AuthKit: auto-bind token audience to resource URL (RFC 8707) (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3905\"\u003e#3905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v2.14.0...v3.2.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=fastmcp\u0026package-manager=pip\u0026previous-version=2.14.0\u0026new-version=3.2.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/Gauravtalreja1/robottelo/pull/339","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gauravtalreja1%2Frobottelo/issues/339","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/339/packages"}},{"old_version":"\u003c3,\u003e=2.10.5","new_version":"\u003e=2.10.5,\u003c4","update_type":null,"path":null,"pr_created_at":"2026-05-10T21:39:32.000Z","version_change":"\u003c3,\u003e=2.10.5 → \u003e=2.10.5,\u003c4","issue":{"uuid":"4416915939","node_id":"PR_kwDOR_1XrM7aDVSk","number":10,"state":"open","title":"chore(deps)(deps-dev): update fastmcp requirement from \u003c3,\u003e=2.10.5 to \u003e=2.10.5,\u003c4","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-10T21:39:32.000Z","updated_at":"2026-05-10T21:39:33.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)(deps-dev): update","packages":[{"name":"fastmcp","old_version":"\u003c3,\u003e=2.10.5","new_version":"\u003e=2.10.5,\u003c4","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [fastmcp](https://github.com/PrefectHQ/fastmcp) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.4: Patch Me If You Can\u003c/h2\u003e\n\u003cp\u003eA grab bag of fixes, hardening, and polish.\u003c/p\u003e\n\u003cp\u003eThe headline behavior change: background tasks are now scoped to the authorization context rather than the MCP session, so a task kicked off by an authenticated user survives session churn and stays tied to who started it. This is a breaking change for anyone relying on the old session-scoped semantics.\u003c/p\u003e\n\u003cp\u003eSecurity got three meaningful upgrades. \u003ccode\u003eFileUpload\u003c/code\u003e now validates actual decoded base64 size instead of trusting the client-reported number, so an attacker can't claim \u0026quot;10 bytes\u0026quot; and deliver 10MB. The proxy client stops forwarding inbound HTTP headers to unrelated remote servers — previously a header meant for server A could leak to server B. And AuthKit now auto-binds token audience to the resource URL per RFC 8707, closing a token-reuse gap across MCP resources.\u003c/p\u003e\n\u003cp\u003eSchema handling had a rough-edges pass. \u003ccode\u003ejson_schema_to_type\u003c/code\u003e no longer crashes on Python keywords, boolean schemas, empty enums, or name collisions, and we added a 232K-schema crash test from APIs.guru to keep it honest. Gemini 2.5 Flash compatibility is fixed by stripping \u003ccode\u003etitle\u003c/code\u003e fields the model rejects. Parameter descriptions are now extracted from docstrings automatically, so your tool signatures document themselves.\u003c/p\u003e\n\u003cp\u003ePlus a Keycloak OAuth provider for enterprise auth, improvements to \u003ccode\u003ectx.elicit()\u003c/code\u003e (new \u003ccode\u003eresponse_title\u003c/code\u003e/\u003ccode\u003eresponse_description\u003c/code\u003e, deprecation warning when called without \u003ccode\u003eresponse_type\u003c/code\u003e), and dozens of smaller fixes across transforms, retry middleware, resource templates, and client disconnect handling.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes ⚠️\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eScope tasks to authorization context, not session by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3800\"\u003ePrefectHQ/fastmcp#3800\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump pydocket\u0026gt;=0.19.0, drop fakeredis pin by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3822\"\u003ePrefectHQ/fastmcp#3822\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd real-world schema crash test (232K schemas from APIs.guru) by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3826\"\u003ePrefectHQ/fastmcp#3826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable 7 zero-violation ruff rules by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3841\"\u003ePrefectHQ/fastmcp#3841\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePromote 7 ty rules from ignore to warn by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3852\"\u003ePrefectHQ/fastmcp#3852\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace ___ with hash-based backend tool routing and per-tool prefab resources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3824\"\u003ePrefectHQ/fastmcp#3824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable 4 ruff rules (DTZ, ERA, ISC, INP) and fix 9 violations by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3842\"\u003ePrefectHQ/fastmcp#3842\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract parameter descriptions from docstrings by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3872\"\u003ePrefectHQ/fastmcp#3872\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: speed up schema crash test (CSafeLoader + xdist-safe aggregation) by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3873\"\u003ePrefectHQ/fastmcp#3873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest: bump OpenAPI init perf threshold to 200ms for Windows CI by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3879\"\u003ePrefectHQ/fastmcp#3879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: unify object-schema conversion through _object_schema_to_type by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3884\"\u003ePrefectHQ/fastmcp#3884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Keycloak OAuth Provider for Enterprise Authentication and local dev by \u003ca href=\"https://github.com/stephaneberle9\"\u003e\u003ccode\u003e@​stephaneberle9\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1937\"\u003ePrefectHQ/fastmcp#1937\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow auth providers to override protected resource base URLs by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3900\"\u003ePrefectHQ/fastmcp#3900\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable PERF and T20 ruff rules by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3845\"\u003ePrefectHQ/fastmcp#3845\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd response_title and response_description to ctx.elicit() by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3912\"\u003ePrefectHQ/fastmcp#3912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeprecate ctx.elicit() without response_type by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3916\"\u003ePrefectHQ/fastmcp#3916\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity 🔒\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValidate actual base64 data size in FileUpload, not client-reported size by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3816\"\u003ePrefectHQ/fastmcp#3816\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop forwarding inbound HTTP headers to unrelated remote servers by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3837\"\u003ePrefectHQ/fastmcp#3837\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAuthKit: auto-bind token audience to resource URL (RFC 8707) by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3905\"\u003ePrefectHQ/fastmcp#3905\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eVersion-check is_docket_available() to avoid transitive pydocket crash by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3807\"\u003ePrefectHQ/fastmcp#3807\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: materialize generators before result conversion, handle bytes gracefully by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3830\"\u003ePrefectHQ/fastmcp#3830\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix json_schema_to_type crashes on keywords, boolean schemas, empty enums, and name collisions by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3818\"\u003ePrefectHQ/fastmcp#3818\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: replace \u003ccode\u003eor\u003c/code\u003e with \u003ccode\u003eis not None\u003c/code\u003e checks for config/override merging by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3833\"\u003ePrefectHQ/fastmcp#3833\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: TransformedTool sync fn crash and schema mutation by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3823\"\u003ePrefectHQ/fastmcp#3823\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: cross-provider duplicate detection, error visibility, mask propagation by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3827\"\u003ePrefectHQ/fastmcp#3827\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: don't pass HTTP kwargs when transport is unspecified by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3838\"\u003ePrefectHQ/fastmcp#3838\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: strip title fields from tool schemas for Gemini 2.5 Flash compatibility by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3861\"\u003ePrefectHQ/fastmcp#3861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: retry when LLM returns text instead of calling final_response by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3850\"\u003ePrefectHQ/fastmcp#3850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise on unhandled content types in sampling handler dispatch chains by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3857\"\u003ePrefectHQ/fastmcp#3857\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken code examples in docs by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3869\"\u003ePrefectHQ/fastmcp#3869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: GoogleGenaiSamplingHandler leaks thought parts and gives unhelpful errors on empty responses by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3849\"\u003ePrefectHQ/fastmcp#3849\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/blob/main/docs/changelog.mdx\"\u003efastmcp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003chr /\u003e\n\u003ch2\u003etitle: \u0026quot;Changelog\u0026quot;\nicon: \u0026quot;list-check\u0026quot;\nrss: true\ntag: NEW\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.1\"\u003ev3.1.1: 'Tis But a Patch\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ePins \u003ccode\u003epydantic-monty\u003c/code\u003e below 0.0.8 to fix a breaking change in Monty that affects code mode. Monty 0.0.8 removed the \u003ccode\u003eexternal_functions\u003c/code\u003e constructor parameter, causing \u003ccode\u003eMontySandboxProvider\u003c/code\u003e to fail. This patch caps the version so existing installs work correctly.\u003c/p\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePin pydantic-monty below 0.0.8 to fix code mode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3497\"\u003e#3497\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.1.0...v3.1.1\"\u003ev3.1.0...v3.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.0\"\u003ev3.1.0: Code to Joy\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFastMCP 3.1 is the Code Mode release. The 3.0 architecture introduced providers and transforms as the extensibility layer — 3.1 puts that architecture to work, shipping the most requested capability since launch: servers that can find and execute code on behalf of agents, without requiring clients to know what tools exist.\u003c/p\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Search transforms for tool discovery by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3154\"\u003e#3154\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd experimental CodeMode transform by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3297\"\u003e#3297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Prefab Apps integration for MCP tool UIs by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3316\"\u003e#3316\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLazy-load heavy imports to reduce import time by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3295\"\u003e#3295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd http_client parameter to all token verifiers for connection pooling by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3300\"\u003e#3300\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd in-memory caching for token introspection results by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3298\"\u003e#3298\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SessionStart hook to install gh CLI in cloud sessions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3308\"\u003e#3308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty 0.0.19 type errors by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3310\"\u003e#3310\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCode Mode: Add resource limits to MontySandboxProvider by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3326\"\u003e#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept transforms as FastMCP init kwarg by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3324\"\u003e#3324\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSplit large test files to comply with loq line limit by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd -m/--module flag to \u003ccode\u003efastmcp run\u003c/code\u003e and \u003ccode\u003edev inspector\u003c/code\u003e by \u003ca href=\"https://github.com/dgenio\"\u003e\u003ccode\u003e@​dgenio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3331\"\u003e#3331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd search_result_serializer hook and serialize_tools_for_output_markdown by \u003ca href=\"https://github.com/MagnusS0\"\u003e\u003ccode\u003e@​MagnusS0\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3337\"\u003e#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd MultiAuth for composing multiple token verification sources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3335\"\u003e#3335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdds PropelAuth as an AuthProvider by \u003ca href=\"https://github.com/andrew-propelauth\"\u003e\u003ccode\u003e@​andrew-propelauth\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3358\"\u003e#3358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace vendored DI with uncalled-for by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3301\"\u003e#3301\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecompose CodeMode into composable discovery tools by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3354\"\u003e#3354\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(contrib): auto-sync MCPMixin decorators with from_function signatures by \u003ca href=\"https://github.com/AnkeshThakur\"\u003e\u003ccode\u003e@​AnkeshThakur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3323\"\u003e#3323\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Google GenAI Sampling Handler by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/2977\"\u003e#2977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ListTools, search limit, and catalog size annotation to CodeMode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3359\"\u003e#3359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow configuring FastMCP transport setting in the same way as other configuration by \u003ca href=\"https://github.com/jvdmr\"\u003e\u003ccode\u003e@​jvdmr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1796\"\u003e#1796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd include_unversioned option to VersionFilter by \u003ca href=\"https://github.com/yangbaechu\"\u003e\u003ccode\u003e@​yangbaechu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3349\"\u003e#3349\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/7d7607473d7713d9937cbbbe0bfc635976c511d3\"\u003e\u003ccode\u003e7d76074\u003c/code\u003e\u003c/a\u003e Stop pydantic 2.13 from leaking _WrappedResult docstring into tool output sch...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/b732a4a516e4a41f053e46dbd86e9520cf5178bf\"\u003e\u003ccode\u003eb732a4a\u003c/code\u003e\u003c/a\u003e Overhaul apps docs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3915\"\u003e#3915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/5c2ff1bd7b9844a3891149741de56a5e4d24621d\"\u003e\u003ccode\u003e5c2ff1b\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3914\"\u003e#3914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/f4f2ec07fbb611a25ce27e1b4f9b67f54bc2420a\"\u003e\u003ccode\u003ef4f2ec0\u003c/code\u003e\u003c/a\u003e Deprecate ctx.elicit() without response_type (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3916\"\u003e#3916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/338b80c3ae3b8c5ac3a7e094178c9f34eb286ea8\"\u003e\u003ccode\u003e338b80c\u003c/code\u003e\u003c/a\u003e chore(deps): bump the uv group across 2 directories with 1 update (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3913\"\u003e#3913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/110cd3adcb7a433923ed8ed4a8b23d076a313ab5\"\u003e\u003ccode\u003e110cd3a\u003c/code\u003e\u003c/a\u003e Add response_title and response_description to ctx.elicit() (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3912\"\u003e#3912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/311784617639d7b46490d863f2e4bb24be6361c5\"\u003e\u003ccode\u003e3117846\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3909\"\u003e#3909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/031c7e03b48330345bc4d1f82a9cc78ed269b07c\"\u003e\u003ccode\u003e031c7e0\u003c/code\u003e\u003c/a\u003e Fix RetryMiddleware not retrying tool errors (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3858\"\u003e#3858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/200d79e7d28f36b36c271621d9550aa3fb3c0aa7\"\u003e\u003ccode\u003e200d79e\u003c/code\u003e\u003c/a\u003e Enable PERF and T20 ruff rules (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3845\"\u003e#3845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/82f310fe61dba25de34f2be3e203555ccfc4181d\"\u003e\u003ccode\u003e82f310f\u003c/code\u003e\u003c/a\u003e AuthKit: auto-bind token audience to resource URL (RFC 8707) (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3905\"\u003e#3905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v2.10.5...v3.2.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/scops/engrama/pull/10","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/scops%2Fengrama/issues/10","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/10/packages"}},{"old_version":"\u003e=0.2.0","new_version":"\u003e=3.2.4","update_type":"patch","path":null,"pr_created_at":"2026-05-09T19:27:34.000Z","version_change":"\u003e=0.2.0 → \u003e=3.2.4","issue":{"uuid":"4413616593","node_id":"PR_kwDOSY8tQM7Z5h9F","number":7,"state":"open","title":"deps(deps): update fastmcp requirement from \u003e=0.2.0 to \u003e=3.2.4","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-09T19:27:34.000Z","updated_at":"2026-05-10T04:14:30.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps): update","packages":[{"name":"fastmcp","old_version":"\u003e=0.2.0","new_version":"\u003e=3.2.4","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [fastmcp](https://github.com/PrefectHQ/fastmcp) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.4: Patch Me If You Can\u003c/h2\u003e\n\u003cp\u003eA grab bag of fixes, hardening, and polish.\u003c/p\u003e\n\u003cp\u003eThe headline behavior change: background tasks are now scoped to the authorization context rather than the MCP session, so a task kicked off by an authenticated user survives session churn and stays tied to who started it. This is a breaking change for anyone relying on the old session-scoped semantics.\u003c/p\u003e\n\u003cp\u003eSecurity got three meaningful upgrades. \u003ccode\u003eFileUpload\u003c/code\u003e now validates actual decoded base64 size instead of trusting the client-reported number, so an attacker can't claim \u0026quot;10 bytes\u0026quot; and deliver 10MB. The proxy client stops forwarding inbound HTTP headers to unrelated remote servers — previously a header meant for server A could leak to server B. And AuthKit now auto-binds token audience to the resource URL per RFC 8707, closing a token-reuse gap across MCP resources.\u003c/p\u003e\n\u003cp\u003eSchema handling had a rough-edges pass. \u003ccode\u003ejson_schema_to_type\u003c/code\u003e no longer crashes on Python keywords, boolean schemas, empty enums, or name collisions, and we added a 232K-schema crash test from APIs.guru to keep it honest. Gemini 2.5 Flash compatibility is fixed by stripping \u003ccode\u003etitle\u003c/code\u003e fields the model rejects. Parameter descriptions are now extracted from docstrings automatically, so your tool signatures document themselves.\u003c/p\u003e\n\u003cp\u003ePlus a Keycloak OAuth provider for enterprise auth, improvements to \u003ccode\u003ectx.elicit()\u003c/code\u003e (new \u003ccode\u003eresponse_title\u003c/code\u003e/\u003ccode\u003eresponse_description\u003c/code\u003e, deprecation warning when called without \u003ccode\u003eresponse_type\u003c/code\u003e), and dozens of smaller fixes across transforms, retry middleware, resource templates, and client disconnect handling.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes ⚠️\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eScope tasks to authorization context, not session by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3800\"\u003ePrefectHQ/fastmcp#3800\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump pydocket\u0026gt;=0.19.0, drop fakeredis pin by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3822\"\u003ePrefectHQ/fastmcp#3822\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd real-world schema crash test (232K schemas from APIs.guru) by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3826\"\u003ePrefectHQ/fastmcp#3826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable 7 zero-violation ruff rules by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3841\"\u003ePrefectHQ/fastmcp#3841\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePromote 7 ty rules from ignore to warn by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3852\"\u003ePrefectHQ/fastmcp#3852\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace ___ with hash-based backend tool routing and per-tool prefab resources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3824\"\u003ePrefectHQ/fastmcp#3824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable 4 ruff rules (DTZ, ERA, ISC, INP) and fix 9 violations by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3842\"\u003ePrefectHQ/fastmcp#3842\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract parameter descriptions from docstrings by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3872\"\u003ePrefectHQ/fastmcp#3872\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: speed up schema crash test (CSafeLoader + xdist-safe aggregation) by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3873\"\u003ePrefectHQ/fastmcp#3873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest: bump OpenAPI init perf threshold to 200ms for Windows CI by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3879\"\u003ePrefectHQ/fastmcp#3879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: unify object-schema conversion through _object_schema_to_type by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3884\"\u003ePrefectHQ/fastmcp#3884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Keycloak OAuth Provider for Enterprise Authentication and local dev by \u003ca href=\"https://github.com/stephaneberle9\"\u003e\u003ccode\u003e@​stephaneberle9\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1937\"\u003ePrefectHQ/fastmcp#1937\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow auth providers to override protected resource base URLs by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3900\"\u003ePrefectHQ/fastmcp#3900\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable PERF and T20 ruff rules by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3845\"\u003ePrefectHQ/fastmcp#3845\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd response_title and response_description to ctx.elicit() by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3912\"\u003ePrefectHQ/fastmcp#3912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeprecate ctx.elicit() without response_type by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3916\"\u003ePrefectHQ/fastmcp#3916\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity 🔒\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValidate actual base64 data size in FileUpload, not client-reported size by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3816\"\u003ePrefectHQ/fastmcp#3816\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop forwarding inbound HTTP headers to unrelated remote servers by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3837\"\u003ePrefectHQ/fastmcp#3837\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAuthKit: auto-bind token audience to resource URL (RFC 8707) by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3905\"\u003ePrefectHQ/fastmcp#3905\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eVersion-check is_docket_available() to avoid transitive pydocket crash by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3807\"\u003ePrefectHQ/fastmcp#3807\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: materialize generators before result conversion, handle bytes gracefully by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3830\"\u003ePrefectHQ/fastmcp#3830\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix json_schema_to_type crashes on keywords, boolean schemas, empty enums, and name collisions by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3818\"\u003ePrefectHQ/fastmcp#3818\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: replace \u003ccode\u003eor\u003c/code\u003e with \u003ccode\u003eis not None\u003c/code\u003e checks for config/override merging by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3833\"\u003ePrefectHQ/fastmcp#3833\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: TransformedTool sync fn crash and schema mutation by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3823\"\u003ePrefectHQ/fastmcp#3823\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: cross-provider duplicate detection, error visibility, mask propagation by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3827\"\u003ePrefectHQ/fastmcp#3827\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: don't pass HTTP kwargs when transport is unspecified by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3838\"\u003ePrefectHQ/fastmcp#3838\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: strip title fields from tool schemas for Gemini 2.5 Flash compatibility by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3861\"\u003ePrefectHQ/fastmcp#3861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: retry when LLM returns text instead of calling final_response by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3850\"\u003ePrefectHQ/fastmcp#3850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise on unhandled content types in sampling handler dispatch chains by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3857\"\u003ePrefectHQ/fastmcp#3857\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken code examples in docs by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3869\"\u003ePrefectHQ/fastmcp#3869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: GoogleGenaiSamplingHandler leaks thought parts and gives unhelpful errors on empty responses by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3849\"\u003ePrefectHQ/fastmcp#3849\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/blob/main/docs/changelog.mdx\"\u003efastmcp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003chr /\u003e\n\u003ch2\u003etitle: \u0026quot;Changelog\u0026quot;\nicon: \u0026quot;list-check\u0026quot;\nrss: true\ntag: NEW\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.1\"\u003ev3.1.1: 'Tis But a Patch\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ePins \u003ccode\u003epydantic-monty\u003c/code\u003e below 0.0.8 to fix a breaking change in Monty that affects code mode. Monty 0.0.8 removed the \u003ccode\u003eexternal_functions\u003c/code\u003e constructor parameter, causing \u003ccode\u003eMontySandboxProvider\u003c/code\u003e to fail. This patch caps the version so existing installs work correctly.\u003c/p\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePin pydantic-monty below 0.0.8 to fix code mode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3497\"\u003e#3497\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.1.0...v3.1.1\"\u003ev3.1.0...v3.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.0\"\u003ev3.1.0: Code to Joy\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFastMCP 3.1 is the Code Mode release. The 3.0 architecture introduced providers and transforms as the extensibility layer — 3.1 puts that architecture to work, shipping the most requested capability since launch: servers that can find and execute code on behalf of agents, without requiring clients to know what tools exist.\u003c/p\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Search transforms for tool discovery by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3154\"\u003e#3154\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd experimental CodeMode transform by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3297\"\u003e#3297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Prefab Apps integration for MCP tool UIs by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3316\"\u003e#3316\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLazy-load heavy imports to reduce import time by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3295\"\u003e#3295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd http_client parameter to all token verifiers for connection pooling by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3300\"\u003e#3300\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd in-memory caching for token introspection results by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3298\"\u003e#3298\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SessionStart hook to install gh CLI in cloud sessions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3308\"\u003e#3308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty 0.0.19 type errors by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3310\"\u003e#3310\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCode Mode: Add resource limits to MontySandboxProvider by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3326\"\u003e#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept transforms as FastMCP init kwarg by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3324\"\u003e#3324\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSplit large test files to comply with loq line limit by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd -m/--module flag to \u003ccode\u003efastmcp run\u003c/code\u003e and \u003ccode\u003edev inspector\u003c/code\u003e by \u003ca href=\"https://github.com/dgenio\"\u003e\u003ccode\u003e@​dgenio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3331\"\u003e#3331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd search_result_serializer hook and serialize_tools_for_output_markdown by \u003ca href=\"https://github.com/MagnusS0\"\u003e\u003ccode\u003e@​MagnusS0\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3337\"\u003e#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd MultiAuth for composing multiple token verification sources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3335\"\u003e#3335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdds PropelAuth as an AuthProvider by \u003ca href=\"https://github.com/andrew-propelauth\"\u003e\u003ccode\u003e@​andrew-propelauth\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3358\"\u003e#3358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace vendored DI with uncalled-for by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3301\"\u003e#3301\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecompose CodeMode into composable discovery tools by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3354\"\u003e#3354\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(contrib): auto-sync MCPMixin decorators with from_function signatures by \u003ca href=\"https://github.com/AnkeshThakur\"\u003e\u003ccode\u003e@​AnkeshThakur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3323\"\u003e#3323\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Google GenAI Sampling Handler by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/2977\"\u003e#2977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ListTools, search limit, and catalog size annotation to CodeMode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3359\"\u003e#3359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow configuring FastMCP transport setting in the same way as other configuration by \u003ca href=\"https://github.com/jvdmr\"\u003e\u003ccode\u003e@​jvdmr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1796\"\u003e#1796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd include_unversioned option to VersionFilter by \u003ca href=\"https://github.com/yangbaechu\"\u003e\u003ccode\u003e@​yangbaechu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3349\"\u003e#3349\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/7d7607473d7713d9937cbbbe0bfc635976c511d3\"\u003e\u003ccode\u003e7d76074\u003c/code\u003e\u003c/a\u003e Stop pydantic 2.13 from leaking _WrappedResult docstring into tool output sch...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/b732a4a516e4a41f053e46dbd86e9520cf5178bf\"\u003e\u003ccode\u003eb732a4a\u003c/code\u003e\u003c/a\u003e Overhaul apps docs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3915\"\u003e#3915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/5c2ff1bd7b9844a3891149741de56a5e4d24621d\"\u003e\u003ccode\u003e5c2ff1b\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3914\"\u003e#3914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/f4f2ec07fbb611a25ce27e1b4f9b67f54bc2420a\"\u003e\u003ccode\u003ef4f2ec0\u003c/code\u003e\u003c/a\u003e Deprecate ctx.elicit() without response_type (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3916\"\u003e#3916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/338b80c3ae3b8c5ac3a7e094178c9f34eb286ea8\"\u003e\u003ccode\u003e338b80c\u003c/code\u003e\u003c/a\u003e chore(deps): bump the uv group across 2 directories with 1 update (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3913\"\u003e#3913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/110cd3adcb7a433923ed8ed4a8b23d076a313ab5\"\u003e\u003ccode\u003e110cd3a\u003c/code\u003e\u003c/a\u003e Add response_title and response_description to ctx.elicit() (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3912\"\u003e#3912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/311784617639d7b46490d863f2e4bb24be6361c5\"\u003e\u003ccode\u003e3117846\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3909\"\u003e#3909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/031c7e03b48330345bc4d1f82a9cc78ed269b07c\"\u003e\u003ccode\u003e031c7e0\u003c/code\u003e\u003c/a\u003e Fix RetryMiddleware not retrying tool errors (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3858\"\u003e#3858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/200d79e7d28f36b36c271621d9550aa3fb3c0aa7\"\u003e\u003ccode\u003e200d79e\u003c/code\u003e\u003c/a\u003e Enable PERF and T20 ruff rules (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3845\"\u003e#3845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/82f310fe61dba25de34f2be3e203555ccfc4181d\"\u003e\u003ccode\u003e82f310f\u003c/code\u003e\u003c/a\u003e AuthKit: auto-bind token audience to resource URL (RFC 8707) (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3905\"\u003e#3905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v0.2.0...v3.2.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n","html_url":"https://github.com/molnkontakt/odoo-mcp/pull/7","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/molnkontakt%2Fodoo-mcp/issues/7","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/7/packages"}}]}