René's URL Explorer Experiment


Title: Consult request_state only for the question a resolver is asking by maxisbey · Pull Request #3019 · modelcontextprotocol/python-sdk · GitHub

Open Graph Title: Consult request_state only for the question a resolver is asking by maxisbey · Pull Request #3019 · modelcontextprotocol/python-sdk

X Title: Consult request_state only for the question a resolver is asking by maxisbey · Pull Request #3019 · modelcontextprotocol/python-sdk

Description: Summary Post-merge review of #2986 surfaced three issues in the resolver input_required flow; this PR fixes all three, each by removing the structure that made the issue possible rather than guarding around it. 1. request_state entries could stand in for a resolver's own computation. The restore gate in _resolve consulted the client-echoed request_state before running the resolver body. Wire keys are predictable (module:qualname), so a client could send an accept entry for a resolver branch that never asks, replacing a server-side computed value, and a decline/cancel entry could abort a resolver with no Elicit arm at all. That contradicted #2986's stated trust model ("a fabricated entry grants the same capability as answering the live question dishonestly"): an entry honored before the body runs grants strictly more. Restore now happens only inside _elicit, after the body has returned an Elicit this round. The body's concrete return always wins; a recorded answer satisfies exactly the question being asked, re-validated against the live Elicit.schema; an entry for a question the server is not asking is never consulted. The trust-model statement is now true by construction. (Integrity-sealing request_state remains the separate follow-up, staged the same way as in the typescript-sdk.) 2. -> Elicit[BaseModel] crashed on restore. issubclass(BaseModel, BaseModel) is true, so a dynamic-schema resolver (the natural typing for create_model(...) questions) registered BaseModel itself as its static restore schema; on round 3+, BaseModel.model_validate(...) raises PydanticUserError (a TypeError, not a ValidationError), which hard-failed the call after the user had already answered. With restore moved into _elicit, the statically-extracted schema has no remaining consumer, so that plumbing is deleted and the crash path with it: dynamic schemas restore against the live schema like everything else. (The registration-time rejection of multi-Elicit-arm annotations stays.) 3. Resolver elicitation and a hand-rolled InputRequiredResult body never converge together. A call has one input_responses/request_state channel. A tool that uses Resolve(...) parameters and returns its own InputRequiredResult overwrites the resolver codec state with its opaque body state; the next round decodes that as "no progress" and re-asks the already-answered resolver question. Round 3 is wire-identical to round 1, looping until the client's round budget runs out. A declared InputRequiredResult return arm on a resolver-using tool is now rejected at registration (InvalidSignature, seeing through Annotated wrappers, type aliases, and unions), and an undeclared one fails the call with a clear error instead of silently fighting for the channel. The low-level Server path and tools without resolver parameters are unaffected. Semantics The cost of body-wins is that an eliciting resolver's body re-runs on each round the call passes through (previously: once to ask, once to consume, then restored without running). This unifies the model: every resolver body may run on each round, each question is still asked exactly once, and only elicited outcomes persist. Wire shapes, round counts, and question batching are unchanged. The docs (dependencies.md, multi-round-trip.md, the refund_desk story README) now scope the run-once guarantee to the question. Tests Five new regression tests, each verified to fail on the pre-fix source: a crafted accept entry cannot replace a non-eliciting branch's value (and the body provably runs); a decline entry cannot abort a pure resolver; an -> Elicit[BaseModel] chain completes across rounds; the Resolve + InputRequiredResult combination is rejected at registration across five annotation spellings; a dynamically returned InputRequiredResult from a resolver-using tool errors cleanly. The existing suite is updated for the run-count change. 100% branch coverage. AI Disclaimer

Open Graph Description: Summary Post-merge review of #2986 surfaced three issues in the resolver input_required flow; this PR fixes all three, each by removing the structure that made the issue possible rather than guardi...

X Description: Summary Post-merge review of #2986 surfaced three issues in the resolver input_required flow; this PR fixes all three, each by removing the structure that made the issue possible rather than guardi...

Opengraph URL: https://github.com/modelcontextprotocol/python-sdk/pull/3019

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:843c807f-8910-0d8a-79e3-bfcb885bf516
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idAEDA:1D6C27:8271F0:ADCFFB:6A5B66D6
html-safe-noncefabd31344f7aa83e1a5b384ec7d1f1251730a05af80e2595bdb6e1a6136c70cf
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBRURBOjFENkMyNzo4MjcxRjA6QURDRkZCOjZBNUI2NkQ2IiwidmlzaXRvcl9pZCI6IjI4NzE1MzkzNDY4OTcwNjk3ODIiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmac1462660f6541d230773b640052588ae188a4a510ce5cbc828b55c42f2c70a3c1
hovercard-subject-tagpull_request:3956455844
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/modelcontextprotocol/python-sdk/pull/3019/files
twitter:imagehttps://avatars.githubusercontent.com/u/224885523?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/224885523?s=400&v=4
og:image:altSummary Post-merge review of #2986 surfaced three issues in the resolver input_required flow; this PR fixes all three, each by removing the structure that made the issue possible rather than guardi...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None5290d7e14309ad1e76106a9c4237bd1041517e83ea182c8ab756752cb0c6940b
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/modelcontextprotocol/python-sdk git https://github.com/modelcontextprotocol/python-sdk.git
octolytics-dimension-user_id182288589
octolytics-dimension-user_loginmodelcontextprotocol
octolytics-dimension-repository_id862584018
octolytics-dimension-repository_nwomodelcontextprotocol/python-sdk
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id862584018
octolytics-dimension-repository_network_root_nwomodelcontextprotocol/python-sdk
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release9c975978430e9ad293956f2bbdaf153b1bd84a99
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/modelcontextprotocol/python-sdk/pull/3019/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fmodelcontextprotocol%2Fpython-sdk%2Fpull%2F3019%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/open-source/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/open-source/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fmodelcontextprotocol%2Fpython-sdk%2Fpull%2F3019%2Ffiles
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=modelcontextprotocol%2Fpython-sdk
Reloadhttps://github.com/modelcontextprotocol/python-sdk/pull/3019/files
Reloadhttps://github.com/modelcontextprotocol/python-sdk/pull/3019/files
Reloadhttps://github.com/modelcontextprotocol/python-sdk/pull/3019/files
Please reload this pagehttps://github.com/modelcontextprotocol/python-sdk/pull/3019/files
modelcontextprotocol https://github.com/modelcontextprotocol
python-sdkhttps://github.com/modelcontextprotocol/python-sdk
Notifications https://github.com/login?return_to=%2Fmodelcontextprotocol%2Fpython-sdk
Fork 3.7k https://github.com/login?return_to=%2Fmodelcontextprotocol%2Fpython-sdk
Star 23.6k https://github.com/login?return_to=%2Fmodelcontextprotocol%2Fpython-sdk
Code https://github.com/modelcontextprotocol/python-sdk
Issues 259 https://github.com/modelcontextprotocol/python-sdk/issues
Pull requests 304 https://github.com/modelcontextprotocol/python-sdk/pulls
Actions https://github.com/modelcontextprotocol/python-sdk/actions
Projects https://github.com/modelcontextprotocol/python-sdk/projects
Models https://github.com/modelcontextprotocol/python-sdk/models
Security and quality 6 https://github.com/modelcontextprotocol/python-sdk/security
Insights https://github.com/modelcontextprotocol/python-sdk/pulse
Code https://github.com/modelcontextprotocol/python-sdk
Issues https://github.com/modelcontextprotocol/python-sdk/issues
Pull requests https://github.com/modelcontextprotocol/python-sdk/pulls
Actions https://github.com/modelcontextprotocol/python-sdk/actions
Projects https://github.com/modelcontextprotocol/python-sdk/projects
Models https://github.com/modelcontextprotocol/python-sdk/models
Security and quality https://github.com/modelcontextprotocol/python-sdk/security
Insights https://github.com/modelcontextprotocol/python-sdk/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Fmodelcontextprotocol%2Fpython-sdk%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fmodelcontextprotocol%2Fpython-sdk%2Fissues%2Fnew%2Fchoose
maxisbeyhttps://github.com/maxisbey
mainhttps://github.com/modelcontextprotocol/python-sdk/tree/main
resolver-restore-semanticshttps://github.com/modelcontextprotocol/python-sdk/tree/resolver-restore-semantics
Conversation 5 https://github.com/modelcontextprotocol/python-sdk/pull/3019
Commits 3 https://github.com/modelcontextprotocol/python-sdk/pull/3019/commits
Checks 35 https://github.com/modelcontextprotocol/python-sdk/pull/3019/checks
Files changed https://github.com/modelcontextprotocol/python-sdk/pull/3019/files
Please reload this pagehttps://github.com/modelcontextprotocol/python-sdk/pull/3019/files
Consult request_state only for the question a resolver is asking https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#top
Show all changes 3 commits https://github.com/modelcontextprotocol/python-sdk/pull/3019/files
5dd78a9 Consult request_state only for the question a resolver is asking maxisbey Jun 29, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/3019/commits/5dd78a90a5872bdb4a0974633e936bdbe74a06a8
59f4c8d Tolerate lazily-evaluated type aliases in the input_required return c… maxisbey Jun 29, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/3019/commits/59f4c8db4cf3ef22fbb9aec8c675ec1f8fbdc9d5
ee82f82 Reword new doc passages to avoid dash asides maxisbey Jun 29, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/3019/commits/ee82f829e0fc5d7d778bcdc95179737df0b5a85f
Clear filters https://github.com/modelcontextprotocol/python-sdk/pull/3019/files
Please reload this pagehttps://github.com/modelcontextprotocol/python-sdk/pull/3019/files
Please reload this pagehttps://github.com/modelcontextprotocol/python-sdk/pull/3019/files
multi-round-trip.md https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-bf12f93d186d9ac3faf1377b597a60bfeb11a1e29c493fd4e6ed20d88d693666
dependencies.md https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-301122785b17090d2e32557bb4ba696d2c76840bedf2579fb085ba86b2800ed1
README.md https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-462512547eb82613de1b8446bd86a21c9c84fd0c32c42d68ac83e15e83527e83
resolve.py https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-11e7b9b5b92bd12c2445dad78f3182ee7846a987d98a01a15aa454910cee97f3
base.py https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-b53a543261a9bc27476087bcb5fcf6e0d7e9d1b5b3df09e312f22b22ccffe761
test_resolve.py https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-5cf4640d448facc1292697df946c57e708a468be27bbac6cc04fd44584a97a21
docs/advanced/multi-round-trip.mdhttps://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-bf12f93d186d9ac3faf1377b597a60bfeb11a1e29c493fd4e6ed20d88d693666
View file https://github.com/modelcontextprotocol/python-sdk/blob/ee82f829e0fc5d7d778bcdc95179737df0b5a85f/docs/advanced/multi-round-trip.md
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/modelcontextprotocol/python-sdk/pull/3019/{{ revealButtonHref }}
https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-bf12f93d186d9ac3faf1377b597a60bfeb11a1e29c493fd4e6ed20d88d693666
https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-bf12f93d186d9ac3faf1377b597a60bfeb11a1e29c493fd4e6ed20d88d693666
docs/tutorial/dependencies.mdhttps://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-301122785b17090d2e32557bb4ba696d2c76840bedf2579fb085ba86b2800ed1
View file https://github.com/modelcontextprotocol/python-sdk/blob/ee82f829e0fc5d7d778bcdc95179737df0b5a85f/docs/tutorial/dependencies.md
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/modelcontextprotocol/python-sdk/pull/3019/{{ revealButtonHref }}
https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-301122785b17090d2e32557bb4ba696d2c76840bedf2579fb085ba86b2800ed1
https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-301122785b17090d2e32557bb4ba696d2c76840bedf2579fb085ba86b2800ed1
examples/stories/refund_desk/README.mdhttps://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-462512547eb82613de1b8446bd86a21c9c84fd0c32c42d68ac83e15e83527e83
View file https://github.com/modelcontextprotocol/python-sdk/blob/ee82f829e0fc5d7d778bcdc95179737df0b5a85f/examples/stories/refund_desk/README.md
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/modelcontextprotocol/python-sdk/pull/3019/{{ revealButtonHref }}
https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-462512547eb82613de1b8446bd86a21c9c84fd0c32c42d68ac83e15e83527e83
https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-462512547eb82613de1b8446bd86a21c9c84fd0c32c42d68ac83e15e83527e83
src/mcp/server/mcpserver/resolve.pyhttps://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-11e7b9b5b92bd12c2445dad78f3182ee7846a987d98a01a15aa454910cee97f3
View file https://github.com/modelcontextprotocol/python-sdk/blob/ee82f829e0fc5d7d778bcdc95179737df0b5a85f/src/mcp/server/mcpserver/resolve.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/modelcontextprotocol/python-sdk/pull/3019/{{ revealButtonHref }}
https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-11e7b9b5b92bd12c2445dad78f3182ee7846a987d98a01a15aa454910cee97f3
https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-11e7b9b5b92bd12c2445dad78f3182ee7846a987d98a01a15aa454910cee97f3
https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-11e7b9b5b92bd12c2445dad78f3182ee7846a987d98a01a15aa454910cee97f3
https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-11e7b9b5b92bd12c2445dad78f3182ee7846a987d98a01a15aa454910cee97f3
https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-11e7b9b5b92bd12c2445dad78f3182ee7846a987d98a01a15aa454910cee97f3
https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-11e7b9b5b92bd12c2445dad78f3182ee7846a987d98a01a15aa454910cee97f3
https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-11e7b9b5b92bd12c2445dad78f3182ee7846a987d98a01a15aa454910cee97f3
https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-11e7b9b5b92bd12c2445dad78f3182ee7846a987d98a01a15aa454910cee97f3
https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-11e7b9b5b92bd12c2445dad78f3182ee7846a987d98a01a15aa454910cee97f3
https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-11e7b9b5b92bd12c2445dad78f3182ee7846a987d98a01a15aa454910cee97f3
https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-11e7b9b5b92bd12c2445dad78f3182ee7846a987d98a01a15aa454910cee97f3
https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-11e7b9b5b92bd12c2445dad78f3182ee7846a987d98a01a15aa454910cee97f3
https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-11e7b9b5b92bd12c2445dad78f3182ee7846a987d98a01a15aa454910cee97f3
https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-11e7b9b5b92bd12c2445dad78f3182ee7846a987d98a01a15aa454910cee97f3
https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-11e7b9b5b92bd12c2445dad78f3182ee7846a987d98a01a15aa454910cee97f3
https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-11e7b9b5b92bd12c2445dad78f3182ee7846a987d98a01a15aa454910cee97f3
https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-11e7b9b5b92bd12c2445dad78f3182ee7846a987d98a01a15aa454910cee97f3
https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-11e7b9b5b92bd12c2445dad78f3182ee7846a987d98a01a15aa454910cee97f3
src/mcp/server/mcpserver/tools/base.pyhttps://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-b53a543261a9bc27476087bcb5fcf6e0d7e9d1b5b3df09e312f22b22ccffe761
View file https://github.com/modelcontextprotocol/python-sdk/blob/ee82f829e0fc5d7d778bcdc95179737df0b5a85f/src/mcp/server/mcpserver/tools/base.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/modelcontextprotocol/python-sdk/pull/3019/{{ revealButtonHref }}
https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-b53a543261a9bc27476087bcb5fcf6e0d7e9d1b5b3df09e312f22b22ccffe761
https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-b53a543261a9bc27476087bcb5fcf6e0d7e9d1b5b3df09e312f22b22ccffe761
https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-b53a543261a9bc27476087bcb5fcf6e0d7e9d1b5b3df09e312f22b22ccffe761
https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-b53a543261a9bc27476087bcb5fcf6e0d7e9d1b5b3df09e312f22b22ccffe761
https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-b53a543261a9bc27476087bcb5fcf6e0d7e9d1b5b3df09e312f22b22ccffe761
https://github.com/modelcontextprotocol/python-sdk/pull/3019/files#diff-b53a543261a9bc27476087bcb5fcf6e0d7e9d1b5b3df09e312f22b22ccffe761
Please reload this pagehttps://github.com/modelcontextprotocol/python-sdk/pull/3019/files
Please reload this pagehttps://github.com/modelcontextprotocol/python-sdk/pull/3019/files
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.