Structured user input mid-task. No more guessing โ MCP servers ask for exactly what they need via form dialogs or secure browser flows.
MCP servers request structured input from users at runtime โ no more parsing free-text prompts for configuration.
JSON Schema-driven dialog for collecting non-sensitive structured data.
Search preferences, config options, project metadata, display names
Opens a browser URL for secure external flows.
accept = user consented to open URLAPI keys, passwords, tokens, payments, OAuth flows
| Criteria | Form Mode | URL Mode |
|---|---|---|
| Data sensitivity | Non-sensitive only | Secrets, credentials, tokens |
| Schema type | Flat JSON Schema, primitives | N/A (browser handles) |
| Validation | Client-side via schema | Server-side |
| Data exposure | Visible in LLM context | Never enters LLM context |
| Completion signal | User submits form | notifications/elicitation/complete |
| User experience | Inline CLI dialog | Browser redirect |
Edit the JSON Schema on the left and see the rendered elicitation dialog on the right.
Click "Render Form" to generate the dialog preview.
Test OrchestKit's elicitation-guard hook โ paste a schema and see if it would be blocked.
The guard scans all property names against these patterns:
const SECRET_PATTERNS = [ /api[_-]?key/i, /secret/i, /password/i, /passwd/i, /token/i, /credential/i, /private[_-]?key/i, /auth[_-]?code/i, /client[_-]?secret/i, /access[_-]?key/i, ];
Enter comma-separated field names to test against the guard:
// Hook returns exit code 2 with message: "Blocked: MCP server \"my-server\" attempted to collect \"api_key\" via form mode. Secrets must use URL mode (browser-based flow) to avoid exposing credentials to the LLM context."
The elicitation dialog is never shown. The MCP server receives a decline action.
Watch the complete lifecycle of an MCP elicitation request through OrchestKit's hooks.
Elicitation event fireselicitation-guard checks schema fieldsElicitationResult event fireselicitation-result-logger records outcomeResponse {action: "accept", content: {query: "auth middleware", category: "code"}} sent to server
How I use MCP elicitation in my day-to-day development with Claude Code.
MCP server asks for DB type, API style, and auth method instead of guessing from project files.
Connect to GitHub, Linear, or Slack via OAuth without exposing tokens to the LLM context.
Before deploying to production, the server asks you to type the environment name as confirmation.
Configure search scope, result limits, and category filters before running a knowledge base query.
OrchestKit blocks form-mode elicitations requesting passwords or API keys โ forces URL mode.
Track when users decline elicitations and inject context suggesting alternative approaches.
Ready-to-use sections for your post about CC 2.1.76 elicitation. Click any block to copy.