Summary
The simulate-research-query tool in the Everything Server currently implements graceful degradation for elicitation on HTTP transport. When running over HTTP, elicitation attempts fail and the task uses a default interpretation instead of prompting the user.
This is because the SDK's sendRequest doesn't work for elicitation over HTTP - the connection is closed after the initial CreateTaskResult response.
Background
The SDK's streaming elicitation API (elicitInputStream) enables elicitation over HTTP by creating a new SSE stream. Once this is available in a released SDK version, we can upgrade to full HTTP elicitation support.
Changes needed
- Update
@modelcontextprotocol/sdk dependency to version with streaming elicitation
- Replace try-catch
sendRequest pattern with streaming API in simulate-research-query.ts
- Follow spec-compliant pattern:
- Set
input_required status before elicitation (spec SHOULD)
- Use streaming elicitation (works over HTTP)
- Transition back to
working after receiving input (spec SHOULD)
Current behavior
| Transport |
Elicitation |
Task Completion |
| STDIO |
✅ Works |
✅ Works |
| HTTP |
❌ Graceful degradation |
✅ Works (uses default) |
Target behavior
| Transport |
Elicitation |
Task Completion |
| STDIO |
✅ Works |
✅ Works |
| HTTP |
✅ Works (via streaming) |
✅ Works |
Summary
The
simulate-research-querytool in the Everything Server currently implements graceful degradation for elicitation on HTTP transport. When running over HTTP, elicitation attempts fail and the task uses a default interpretation instead of prompting the user.This is because the SDK's
sendRequestdoesn't work for elicitation over HTTP - the connection is closed after the initialCreateTaskResultresponse.Background
The SDK's streaming elicitation API (
elicitInputStream) enables elicitation over HTTP by creating a new SSE stream. Once this is available in a released SDK version, we can upgrade to full HTTP elicitation support.Changes needed
@modelcontextprotocol/sdkdependency to version with streaming elicitationsendRequestpattern with streaming API insimulate-research-query.tsinput_requiredstatus before elicitation (spec SHOULD)workingafter receiving input (spec SHOULD)Current behavior
Target behavior