-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Description
System Info
Latest Llama Stack and Llama Stack Client Python on main around noon ET on 2026-01-06.
Information
- The official example scripts
- My own modified scripts
🐛 Describe the bug
I make a call to Llama Stack with a complex request that requires multiple MCP tool calls to complete. I have logging enabled in my MCP server that shows me each time a tools/list message is sent. I see in the log for my server that tools/list is called multiple times.
The MCP server I used with the added logging is here: https://github.com/The-AI-Alliance/llama-stack-examples/blob/main/notebooks/01-responses/nps_mcp_server.py
It is invoked as:
python nps_mcp_server.py --log-level DEBUG --transport sse --port 3005and then I use it by calling:
responses_api_response1 = client.responses.create(
model="openai/gpt-4o",
input="Tell me about some parks in Rhode Island, and let me know if there are any upcoming events at them.",
instructions="You are a helpful assistant that can answer questions about the National Parks Service.",
tools=[
{
"type": "mcp",
"server_url": "http://localhost:3005/sse/",
"server_label": "NPS",
"requires_approval": False,
"authorization":"frog",
}
]
)Error logs
Here are the logs from the NPS MCP server. Note that "Completed message: tools/list" appears six times even though this was a single Responses call:
[01/06/26 12:31:28] INFO Starting MCP server 'nps' with transport 'sse' on http://localhost:3005/sse/ server.py:1448
/Users/bmurdock/sample-agent/venv-3_12_9/lib/python3.12/site-packages/websockets/legacy/__init__.py:6: DeprecationWarning: websockets.legacy is deprecated; see https://websockets.readthedocs.io/en/stable/howto/upgrade.html for upgrade instructions
warnings.warn( # deprecated in 14.0 - 2024-11-09
/Users/bmurdock/sample-agent/venv-3_12_9/lib/python3.12/site-packages/uvicorn/protocols/websockets/websockets_impl.py:17: DeprecationWarning: websockets.server.WebSocketServerProtocol is deprecated
from websockets.server import WebSocketServerProtocol
INFO: Started server process [65505]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://localhost:3005 (Press CTRL+C to quit)
INFO: ::1:49591 - "POST /sse/ HTTP/1.1" 405 Method Not Allowed
INFO: ::1:49592 - "GET /sse/ HTTP/1.1" 200 OK
INFO: ::1:49593 - "POST /messages/?session_id=ce34d3f1b6f646dab5912be787f76e77 HTTP/1.1" 202 Accepted
INFO: ::1:49593 - "POST /messages/?session_id=ce34d3f1b6f646dab5912be787f76e77 HTTP/1.1" 202 Accepted
INFO: ::1:49593 - "POST /messages/?session_id=ce34d3f1b6f646dab5912be787f76e77 HTTP/1.1" 202 Accepted
2026-01-06 12:31:43,285 - __main__ - INFO - Processing message: source=client type=request method=tools/list
2026-01-06 12:31:43,286 - __main__ - DEBUG - list-tools called at 2026-01-06 17:31:43.285874+00:00 (method: tools/list)
2026-01-06 12:31:43,286 - __main__ - DEBUG - list-tools returned 5 tools
2026-01-06 12:31:43,286 - __main__ - INFO - Completed message: tools/list
INFO: ::1:49595 - "GET /sse/ HTTP/1.1" 200 OK
INFO: ::1:49596 - "POST /messages/?session_id=71a8d3b81380459494659e2e11a0f77e HTTP/1.1" 202 Accepted
INFO: ::1:49596 - "POST /messages/?session_id=71a8d3b81380459494659e2e11a0f77e HTTP/1.1" 202 Accepted
INFO: ::1:49596 - "POST /messages/?session_id=71a8d3b81380459494659e2e11a0f77e HTTP/1.1" 202 Accepted
2026-01-06 12:31:44,241 - __main__ - INFO - Processing message: source=client type=request method=tools/call
2026-01-06 12:31:44,241 - __main__ - DEBUG - search_parks called with inputs: state_code=RI, park_code=None, query=None, limit=10
2026-01-06 12:31:44,241 - __main__ - DEBUG - tool call headers: {'host': 'localhost:3005', 'accept-encoding': 'gzip, deflate, zstd', 'connection': 'keep-alive', 'user-agent': 'python-httpx/0.28.1', 'authorization': 'Bear***frog', 'accept': 'text/event-stream', 'cache-control': 'no-store'}
2026-01-06 12:31:44,241 - __main__ - DEBUG - Making HTTP request to: https://developer.nps.gov/api/v1/parks
2026-01-06 12:31:44,241 - __main__ - DEBUG - Request headers: {'X-Api-Key': 'aI1d***gIJJ', 'User-Agent': 'nps-mcp-server/1.0 (contact@example.com)'}
2026-01-06 12:31:44,241 - __main__ - DEBUG - Request params: {'limit': '10', 'stateCode': 'RI'}
2026-01-06 12:31:44,978 - __main__ - DEBUG - HTTP response status: 200
2026-01-06 12:31:44,978 - __main__ - DEBUG - HTTP response headers: {'date': 'Tue, 06 Jan 2026 17:31:44 GMT', 'content-type': 'application/json;charset=utf-8', 'content-length': '6683', 'connection': 'keep-alive', 'access-control-allow-credentials': 'true', 'access-control-allow-headers': 'Content-type, Authorization, Access-Control-Allow-Headers, Credentials, X-Api-Key', 'access-control-allow-methods': 'GET, OPTIONS', 'access-control-allow-origin': '*', 'age': '0', 'allow': 'Get', 'content-encoding': 'gzip', 'content-security-policy': "default-src 'none'; base-uri 'none'; connect-src 'self'; form-action 'self'; font-src 'self'; frame-ancestors 'none'; img-src 'self'; media-src 'self'; style-src 'self' 'unsafe-inline'; script-src 'self'; worker-src 'self';", 'strict-transport-security': 'max-age=31536000; includeSubDomains; preload', 'vary': 'Accept-Encoding, Accept-Encoding', 'via': 'https/1.1 api-umbrella (ApacheTrafficServer [cMsSf ])', 'x-api-umbrella-request-id': 'crihelm0p6vdq7n6a8h0', 'x-cache': 'MISS', 'x-content-type-options': 'nosniff', 'x-ratelimit-limit': '1000', 'x-ratelimit-remaining': '989', 'x-vcap-request-id': '2d3d17bf-6035-4a8d-4512-d30bd0797e96', 'x-xss-protection': '1; mode=block', 'x-frame-options': 'SAMEORIGIN'}
2026-01-06 12:31:44,981 - __main__ - DEBUG - Raw API response data (first 500 chars): {'total': '4', 'limit': '10', 'start': '0', 'data': [{'id': 'A36366E7-5663-4531-B0CE-D58928C6D01B', 'url': 'https://www.nps.gov/blrv/index.htm', 'fullName': 'Blackstone River Valley National Historical Park', 'parkCode': 'blrv', 'description': "The Blackstone River powered America's entry into the Age of Industry. The success of Samuel Slater's cotton spinning mill in Pawtucket, RI touched off a chain reaction that changed how people worked and where they lived. Learn how this revolution transfo...
2026-01-06 12:31:44,982 - __main__ - DEBUG - search_parks returning success result with 4 parks
2026-01-06 12:31:44,982 - __main__ - DEBUG - Output (first 300 chars): {
"total": "4",
"parks": [
{
"name": "Blackstone River Valley National Historical Park",
"code": "blrv",
"description": "The Blackstone River powered America's entry into the Age of Industry. The success of Samuel Slater's cotton spinning mill in Pawtucket, RI touched off a...
2026-01-06 12:31:44,983 - __main__ - INFO - Completed message: tools/call
INFO: ::1:49596 - "POST /messages/?session_id=71a8d3b81380459494659e2e11a0f77e HTTP/1.1" 202 Accepted
2026-01-06 12:31:44,990 - __main__ - INFO - Processing message: source=client type=request method=tools/list
2026-01-06 12:31:44,990 - __main__ - DEBUG - list-tools called at 2026-01-06 17:31:44.990384+00:00 (method: tools/list)
2026-01-06 12:31:44,990 - __main__ - DEBUG - list-tools returned 5 tools
2026-01-06 12:31:44,990 - __main__ - INFO - Completed message: tools/list
INFO: ::1:49601 - "GET /sse/ HTTP/1.1" 200 OK
INFO: ::1:49602 - "POST /messages/?session_id=642ff6e2e29f48aaa44c1a73b9cfd4bd HTTP/1.1" 202 Accepted
INFO: ::1:49602 - "POST /messages/?session_id=642ff6e2e29f48aaa44c1a73b9cfd4bd HTTP/1.1" 202 Accepted
INFO: ::1:49602 - "POST /messages/?session_id=642ff6e2e29f48aaa44c1a73b9cfd4bd HTTP/1.1" 202 Accepted
2026-01-06 12:31:46,568 - __main__ - INFO - Processing message: source=client type=request method=tools/call
2026-01-06 12:31:46,568 - __main__ - DEBUG - get_park_events called with inputs: park_code=blrv, limit=10
2026-01-06 12:31:46,568 - __main__ - DEBUG - Making HTTP request to: https://developer.nps.gov/api/v1/events
2026-01-06 12:31:46,568 - __main__ - DEBUG - Request headers: {'X-Api-Key': 'aI1d***gIJJ', 'User-Agent': 'nps-mcp-server/1.0 (contact@example.com)'}
2026-01-06 12:31:46,568 - __main__ - DEBUG - Request params: {'parkCode': 'blrv', 'limit': '10'}
2026-01-06 12:31:47,305 - __main__ - DEBUG - HTTP response status: 200
2026-01-06 12:31:47,306 - __main__ - DEBUG - HTTP response headers: {'date': 'Tue, 06 Jan 2026 17:31:47 GMT', 'content-type': 'application/json; charset=utf-8', 'transfer-encoding': 'chunked', 'connection': 'keep-alive', 'access-control-expose-headers': 'X-Pagination', 'age': '1', 'content-encoding': 'gzip', 'referrer-policy': 'strict-origin-when-cross-origin', 'strict-transport-security': 'max-age=31536000; includeSubDomains; preload', 'vary': 'Accept-Encoding, Accept-Encoding', 'via': '1.1 11017c4db22106ac70e16ce75190a430.cloudfront.net (CloudFront), https/1.1 api-umbrella (ApacheTrafficServer [cMsSf ])', 'x-amz-cf-id': 'eCC5Edh-3nPNGIyvFHmMOCJEXdbRlnN98omXLufm3JJvY-jL8y3fJg==', 'x-amz-cf-pop': 'HIO52-P4', 'x-api-umbrella-request-id': 'crihem78o4sj33uc3heg', 'x-cache': 'Miss from cloudfront', 'x-content-type-options': 'nosniff', 'x-pagination': '{"pagenumber":"1","pagesize":"50","total":"8"}', 'x-ratelimit-limit': '1000', 'x-ratelimit-remaining': '988', 'x-vcap-request-id': '6ddb7641-3f7f-46dc-73a5-66756693701e', 'x-xss-protection': '1; mode=block', 'x-frame-options': 'SAMEORIGIN'}
2026-01-06 12:31:47,307 - __main__ - DEBUG - Raw API response data (first 500 chars): {'pagesize': '50', 'pagenumber': '1', 'total': '8', 'errors': [], 'data': [{'categoryid': '1', 'category': 'Regular Event', 'eventid': '124212', 'date': '2026-01-10', 'datestart': '2026-01-10', 'dateend': '2026-01-10', 'recurrencedatestart': '2026-01-10', 'recurrencedateend': '2026-01-24', 'latitude': '42.023989', 'longitude': '-71.582714', 'isrecurring': 'false', 'isallday': 'false', 'isregresrequired': 'false', 'isfree': 'true', 'regresurl': '', 'regresinfo': '', 'infourl': '', 'feeinfo': '', ...
2026-01-06 12:31:47,308 - __main__ - DEBUG - get_park_events returning success result with 8 events
2026-01-06 12:31:47,308 - __main__ - DEBUG - Output (first 300 chars): {
"parkCode": "BLRV",
"totalEvents": 8,
"events": [
{
"title": "Blackstone Canal Hike Series",
"description": "<p class=\"\">Join us for hikes on Saturday mornings in January at 10:30 AM. Hikes will depart from various locations along the historic Blackstone Canal on 1/3, 1/10,...
2026-01-06 12:31:47,309 - __main__ - INFO - Completed message: tools/call
INFO: ::1:49602 - "POST /messages/?session_id=642ff6e2e29f48aaa44c1a73b9cfd4bd HTTP/1.1" 202 Accepted
2026-01-06 12:31:47,316 - __main__ - INFO - Processing message: source=client type=request method=tools/list
2026-01-06 12:31:47,316 - __main__ - DEBUG - list-tools called at 2026-01-06 17:31:47.316431+00:00 (method: tools/list)
2026-01-06 12:31:47,316 - __main__ - DEBUG - list-tools returned 5 tools
2026-01-06 12:31:47,316 - __main__ - INFO - Completed message: tools/list
INFO: ::1:49606 - "GET /sse/ HTTP/1.1" 200 OK
INFO: ::1:49607 - "POST /messages/?session_id=912ce762f0dd4528bcee1f96a80d84db HTTP/1.1" 202 Accepted
INFO: ::1:49607 - "POST /messages/?session_id=912ce762f0dd4528bcee1f96a80d84db HTTP/1.1" 202 Accepted
INFO: ::1:49607 - "POST /messages/?session_id=912ce762f0dd4528bcee1f96a80d84db HTTP/1.1" 202 Accepted
2026-01-06 12:31:47,338 - __main__ - INFO - Processing message: source=client type=request method=tools/call
2026-01-06 12:31:47,338 - __main__ - DEBUG - get_park_events called with inputs: park_code=rowi, limit=10
2026-01-06 12:31:47,338 - __main__ - DEBUG - Making HTTP request to: https://developer.nps.gov/api/v1/events
2026-01-06 12:31:47,339 - __main__ - DEBUG - Request headers: {'X-Api-Key': 'aI1d***gIJJ', 'User-Agent': 'nps-mcp-server/1.0 (contact@example.com)'}
2026-01-06 12:31:47,339 - __main__ - DEBUG - Request params: {'parkCode': 'rowi', 'limit': '10'}
2026-01-06 12:31:47,973 - __main__ - DEBUG - HTTP response status: 200
2026-01-06 12:31:47,973 - __main__ - DEBUG - HTTP response headers: {'date': 'Tue, 06 Jan 2026 17:31:47 GMT', 'content-type': 'application/json; charset=utf-8', 'transfer-encoding': 'chunked', 'connection': 'keep-alive', 'access-control-expose-headers': 'X-Pagination', 'age': '0', 'content-encoding': 'gzip', 'referrer-policy': 'strict-origin-when-cross-origin', 'strict-transport-security': 'max-age=31536000; includeSubDomains; preload', 'vary': 'Accept-Encoding, Accept-Encoding', 'via': '1.1 a454a679efa1e16833b77cb6af61e11c.cloudfront.net (CloudFront), https/1.1 api-umbrella (ApacheTrafficServer [cMsSf ])', 'x-amz-cf-id': 'QN73kKsAxFnPIa3MHmfzek_E_P-6Grgvi-avxoATqLdIV0v4zrjOXA==', 'x-amz-cf-pop': 'HIO52-P4', 'x-api-umbrella-request-id': 'crihemdcehmfsht112o0', 'x-cache': 'Miss from cloudfront', 'x-content-type-options': 'nosniff', 'x-pagination': '{"pagenumber":"1","pagesize":"50","total":"3"}', 'x-ratelimit-limit': '1000', 'x-ratelimit-remaining': '987', 'x-vcap-request-id': 'd9d8c0fe-047d-4a12-4282-1e297abc8cb2', 'x-xss-protection': '1; mode=block', 'x-frame-options': 'SAMEORIGIN'}
2026-01-06 12:31:47,973 - __main__ - DEBUG - Raw API response data (first 500 chars): {'pagesize': '50', 'pagenumber': '1', 'total': '3', 'errors': [], 'data': [{'categoryid': '1', 'category': 'Regular Event', 'eventid': '124210', 'date': '2026-01-07', 'datestart': '2025-12-03', 'dateend': '2026-05-27', 'recurrencedatestart': '2025-12-03', 'recurrencedateend': '2026-05-27', 'latitude': '', 'longitude': '', 'isrecurring': 'true', 'isallday': 'false', 'isregresrequired': 'false', 'isfree': 'true', 'regresurl': '', 'regresinfo': '', 'infourl': 'https://www.nps.gov/rowi/planyourvisit...
2026-01-06 12:31:47,974 - __main__ - DEBUG - get_park_events returning success result with 3 events
2026-01-06 12:31:47,974 - __main__ - DEBUG - Output (first 300 chars): {
"parkCode": "ROWI",
"totalEvents": 3,
"events": [
{
"title": "Visitor Center Open",
"description": "<p>Explore the life and legacy of Roger Williams. Park Rangers and volunteers are standing by. While you're here, watch our 5 minute film, read our exhibits, browse the booksto...
2026-01-06 12:31:47,974 - __main__ - INFO - Completed message: tools/call
INFO: ::1:49607 - "POST /messages/?session_id=912ce762f0dd4528bcee1f96a80d84db HTTP/1.1" 202 Accepted
2026-01-06 12:31:47,979 - __main__ - INFO - Processing message: source=client type=request method=tools/list
2026-01-06 12:31:47,979 - __main__ - DEBUG - list-tools called at 2026-01-06 17:31:47.979380+00:00 (method: tools/list)
2026-01-06 12:31:47,979 - __main__ - DEBUG - list-tools returned 5 tools
2026-01-06 12:31:47,979 - __main__ - INFO - Completed message: tools/list
INFO: ::1:49610 - "GET /sse/ HTTP/1.1" 200 OK
INFO: ::1:49611 - "POST /messages/?session_id=50574cf56e4a4aafb3971a167e6ba2a6 HTTP/1.1" 202 Accepted
INFO: ::1:49611 - "POST /messages/?session_id=50574cf56e4a4aafb3971a167e6ba2a6 HTTP/1.1" 202 Accepted
INFO: ::1:49611 - "POST /messages/?session_id=50574cf56e4a4aafb3971a167e6ba2a6 HTTP/1.1" 202 Accepted
2026-01-06 12:31:48,000 - __main__ - INFO - Processing message: source=client type=request method=tools/call
2026-01-06 12:31:48,000 - __main__ - DEBUG - get_park_events called with inputs: park_code=tosy, limit=10
2026-01-06 12:31:48,000 - __main__ - DEBUG - Making HTTP request to: https://developer.nps.gov/api/v1/events
2026-01-06 12:31:48,000 - __main__ - DEBUG - Request headers: {'X-Api-Key': 'aI1d***gIJJ', 'User-Agent': 'nps-mcp-server/1.0 (contact@example.com)'}
2026-01-06 12:31:48,000 - __main__ - DEBUG - Request params: {'parkCode': 'tosy', 'limit': '10'}
2026-01-06 12:31:48,656 - __main__ - DEBUG - HTTP response status: 200
2026-01-06 12:31:48,656 - __main__ - DEBUG - HTTP response headers: {'date': 'Tue, 06 Jan 2026 17:31:48 GMT', 'content-type': 'application/json; charset=utf-8', 'transfer-encoding': 'chunked', 'connection': 'keep-alive', 'access-control-expose-headers': 'X-Pagination', 'age': '0', 'content-encoding': 'gzip', 'referrer-policy': 'strict-origin-when-cross-origin', 'strict-transport-security': 'max-age=31536000; includeSubDomains; preload', 'vary': 'Accept-Encoding, Accept-Encoding', 'via': '1.1 c5e1a6561d8dc3977e11160718fc75e8.cloudfront.net (CloudFront), https/1.1 api-umbrella (ApacheTrafficServer [cMsSf ])', 'x-amz-cf-id': 'd1lQPBDuoy90X5Z-FscO45258CxcyR3OGKo37XoBVMRFVIc7thOo3g==', 'x-amz-cf-pop': 'HIO52-P4', 'x-api-umbrella-request-id': 'crihemierp1srfm7ntug', 'x-cache': 'Miss from cloudfront', 'x-content-type-options': 'nosniff', 'x-pagination': '{"pagenumber":"1","pagesize":"50","total":"0"}', 'x-ratelimit-limit': '1000', 'x-ratelimit-remaining': '986', 'x-vcap-request-id': '79a04c30-6e2f-4336-7774-7da562d54068', 'x-xss-protection': '1; mode=block', 'x-frame-options': 'SAMEORIGIN'}
2026-01-06 12:31:48,657 - __main__ - DEBUG - Raw API response data (first 500 chars): {'pagesize': '50', 'pagenumber': '1', 'total': '0', 'errors': [], 'data': []}...
2026-01-06 12:31:48,658 - __main__ - DEBUG - get_park_events returning no results: {"parkCode": "TOSY", "message": "No upcoming events found for this park"}
2026-01-06 12:31:48,658 - __main__ - INFO - Completed message: tools/call
INFO: ::1:49611 - "POST /messages/?session_id=50574cf56e4a4aafb3971a167e6ba2a6 HTTP/1.1" 202 Accepted
2026-01-06 12:31:48,667 - __main__ - INFO - Processing message: source=client type=request method=tools/list
2026-01-06 12:31:48,667 - __main__ - DEBUG - list-tools called at 2026-01-06 17:31:48.667181+00:00 (method: tools/list)
2026-01-06 12:31:48,667 - __main__ - DEBUG - list-tools returned 5 tools
2026-01-06 12:31:48,667 - __main__ - INFO - Completed message: tools/list
INFO: ::1:49614 - "GET /sse/ HTTP/1.1" 200 OK
INFO: ::1:49615 - "POST /messages/?session_id=2bfe0ce8774645df9b2d6e08cf32916d HTTP/1.1" 202 Accepted
INFO: ::1:49615 - "POST /messages/?session_id=2bfe0ce8774645df9b2d6e08cf32916d HTTP/1.1" 202 Accepted
INFO: ::1:49615 - "POST /messages/?session_id=2bfe0ce8774645df9b2d6e08cf32916d HTTP/1.1" 202 Accepted
2026-01-06 12:31:48,689 - __main__ - INFO - Processing message: source=client type=request method=tools/call
2026-01-06 12:31:48,689 - __main__ - DEBUG - get_park_events called with inputs: park_code=waro, limit=10
2026-01-06 12:31:48,689 - __main__ - DEBUG - Making HTTP request to: https://developer.nps.gov/api/v1/events
2026-01-06 12:31:48,689 - __main__ - DEBUG - Request headers: {'X-Api-Key': 'aI1d***gIJJ', 'User-Agent': 'nps-mcp-server/1.0 (contact@example.com)'}
2026-01-06 12:31:48,689 - __main__ - DEBUG - Request params: {'parkCode': 'waro', 'limit': '10'}
2026-01-06 12:31:49,176 - __main__ - DEBUG - HTTP response status: 200
2026-01-06 12:31:49,176 - __main__ - DEBUG - HTTP response headers: {'date': 'Tue, 06 Jan 2026 17:31:49 GMT', 'content-type': 'application/json; charset=utf-8', 'transfer-encoding': 'chunked', 'connection': 'keep-alive', 'access-control-expose-headers': 'X-Pagination', 'age': '0', 'content-encoding': 'gzip', 'referrer-policy': 'strict-origin-when-cross-origin', 'strict-transport-security': 'max-age=31536000; includeSubDomains; preload', 'vary': 'Accept-Encoding, Accept-Encoding', 'via': '1.1 ba53e0bccc2d60bfa0ca7719c7526e16.cloudfront.net (CloudFront), https/1.1 api-umbrella (ApacheTrafficServer [cMsSf ])', 'x-amz-cf-id': '5_05q4P9bEPLcPlDOkdOxhg7qCDTwctmbWBHUyJ9H3q-9kgJppLP-g==', 'x-amz-cf-pop': 'HIO52-P4', 'x-api-umbrella-request-id': 'crihemnpt0qmkclruqdg', 'x-cache': 'Miss from cloudfront', 'x-content-type-options': 'nosniff', 'x-pagination': '{"pagenumber":"1","pagesize":"50","total":"0"}', 'x-ratelimit-limit': '1000', 'x-ratelimit-remaining': '985', 'x-vcap-request-id': '1022d845-62d1-45a8-661b-21a718df8ce5', 'x-xss-protection': '1; mode=block', 'x-frame-options': 'SAMEORIGIN'}
2026-01-06 12:31:49,177 - __main__ - DEBUG - Raw API response data (first 500 chars): {'pagesize': '50', 'pagenumber': '1', 'total': '0', 'errors': [], 'data': []}...
2026-01-06 12:31:49,177 - __main__ - DEBUG - get_park_events returning no results: {"parkCode": "WARO", "message": "No upcoming events found for this park"}
2026-01-06 12:31:49,177 - __main__ - INFO - Completed message: tools/call
INFO: ::1:49615 - "POST /messages/?session_id=2bfe0ce8774645df9b2d6e08cf32916d HTTP/1.1" 202 Accepted
2026-01-06 12:31:49,181 - __main__ - INFO - Processing message: source=client type=request method=tools/list
2026-01-06 12:31:49,181 - __main__ - DEBUG - list-tools called at 2026-01-06 17:31:49.181474+00:00 (method: tools/list)
2026-01-06 12:31:49,181 - __main__ - DEBUG - list-tools returned 5 tools
2026-01-06 12:31:49,181 - __main__ - INFO - Completed message: tools/list
Expected behavior
One call to tools/list at the start of the responses request, and then it keeps the list around so it doesn't need to keep calling it on each inference step.